\chapter{Analytické prístupy pri spracovaní rozhodovacích procesov}
\label{chap:analyza}

\hypertarget{link1}
V predchádzajúcich kapitolách sme sa zoznámili s CDSS systémami, a
zrekapitulovali sme si základné matematické fundamenty, ktoré sú potrebné
aby sme mohli podporu rozhodovania prostredníctvom CDSS
systémov implementovať. V tejto kapitole sa zameriame na znalosti, ktoré sú
zhromaždené v báze znalostí CDSS systému vo forme symbolovej reprezentácie
a sústredíme sa na ich analýzu pre potreby podpory rozhodovacích procesov.
Špecificky, budeme sa zaoberať analýzou, ktorú je možné previesť
prostredníctvom nejakého druhu inferencie, teda odvodzovania, usudzovania,
manipulácie so symbolmi. V nasledujúcej kapitole sa potom zoznámime aj s
iným -- subsymbolovým -- druhom analýzy dát. Výhoda symbolovej inferencie
spočíva predovšetkým v tom, že jej výsledkom sú odvodené symboly, ktoré vie
používateľ jednoznačne interpretovať, zatiaľ čo u subsymbolových metód to tak
nutne nemusí byť.

V kapitole sa najprv zoznámime so základnou Štruktúrou každého znalostného
systému, ktorý sa vždy skladá z nasledovných časí:
\begin{itemize}
\item báza znalostí,
\item báza faktov,
\item inferenčný mechanizmus.
\end{itemize}

Tým, ako sú samotné znalosti reprezentované a ako presne prebieha
inferencia (čo je vždy iné, u iného typu znalostí) sa zaoberá umelá
inteligencie, presnejšie reprezentácia znalostí. Niekedy tiež hovoríme
odvetví znalostného manažmentu. Výskum v tejto oblasti je orientovaný na to, ako je
znalosti potrebné formulovať a v akých štruktúrach uchovávať. Každý problém
je špecifický, a preto na jeho reprezentáciu môže byť vhodná iná štruktúra.
Nevieme teda povedať, ktorý spôsob je všeobecne najvhodnejší, no vieme
vymenovať najrozšírenejšie techniky, s ktorými sa zoznámime druhej časti
tento kapitoly:

\begin{itemize}
\item predikátová logika,
\item produkčné systémy,
\item sémantické siete,
\item rámce,
\item ontológie,
\item Bayesovské siete.
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Štruktúra znalostného systému}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Znalostné systémy všeobecne definujeme ako systémy, ktoré na svoju činnosť
využívajú znalosti, ktoré sú vzhľadom na úlohy a ciele systému vhodne
reprezentované a uložené. Každý znalostný systém preto pozostáva z bázy
znalostí a inferenčného mechanizmu, ktorý umožňuje s bázou znalostí
narábať, napr. odpovedať na dotazy a vyvodzovať z existujúcich
reprezentovaných znalostí nové.

Špecifickou časťou bázy znalostí je báza
faktov, ktorá obsahuje platné fakty, teda \emph{extenzionálne znalosti}.
Môžeme ich vnímať ako pozorovania, ktoré platia. Napríklad ,,prší'' alebo
,,svieti slnko''. Báza znalostí môže okrem
toho obsahovať ešte \emph{intenzionálne znalosti}, ktoré hovoria vzťahoch
medzi platnými faktami. Naríklad ,,ak prší, chodník je mokrý''.

Základnú schému znalostného systému vidíme na orbázku~\ref{obr:zs}.

\begin{figure}[htb]
	\begin{center}
		\includegraphics[height=260px,width=404px]{images/zs.png}
		\caption{Vzťah medzi zložkami znalostného systému.}
		\label{obr:zs}
	\end{center}
\end{figure}

V ďalšom texte sa s jednotlivými časťami znalostných systémov zoznámime
podrobnejšie.

\subsection{Báza znalostí}

Pod pojmom báza znalostí pre expertné systémy si môžeme predstaviť databázu znalostí od experta. Od neho sa získavajú odborné informácie, ktoré spracováva špecialista schopný zakódovať znalosti do požadovaného tvaru. Túto profesiu nazývame \textbf{znalostný inžinier} (odvodené pomenovanie z názvu príslušnej disciplíny \textbf{znalostné inžinierstvo}).\cite{popper-expertne:1989}

\subsection{Báza faktov}

Množiny údajov \textit{báza znalostí} a \textit{báza faktov} sa často
nerozlišujú. V istých prípadoch je však vhodné dáta rozlišovať a v báze
znalostí mať uložené všeobecne platné údaje podľa predošlej definície
(znalosti od experta) a v báze faktov len fakty, ktoré súvisia s aktuálne
riešeným problémom a sú modifikované inferenčným mechanizmom. Bázu faktov
môžeme vnímať aj ako čiastočné zobrazenie alebo konkretizáciu bázy
znalostí. Keďže s faktami počas odvodzovania stále pracujeme, omnoho
častejšie ich modifikujeme a pristupujeme k nim ako ku znalostiam. Od bázy
znalostí sa teda báza faktov líši tým, že je to dynamická štruktúra (ide hlavne o dopĺňanie nových faktov), a teda je v nej o dosť dôležitejšia efektívna organizácia.

Pre rýchlejší prístup k faktom je výhodné mazať z bázy faktov nepotrebné údaje. V istých prípadoch sa môže stať, že odvodíme fakt, z ktorého už známe fakty vyplývajú. Ak napríklad hľadáme nejaké konkrétne číslo a vieme, že hľadané číslo nie je ani 4, ani 6, ani 8 a následne na to odvodíme, že toto číslo nie je párne, môžeme z bázy faktov odstrániť vymenované tri fakty, pretože ich zovšeobecnením je párnosť.

\subsection{Inferenčný mechanizmus}

Inferenčný mechanizmus je jednou z neoddeliteľných súčastí každého expertného systému. Je veľmi dôležité mať správne zadanú bázu znalostí, ale sama o sebe by nedávala zmysel, keby sme nevedeli nič o tom, ako s týmito údajmi pracovať a ako z nich odvádzať fakty. A práve vysvetleniu dôležitosti odvodzovacieho (inferenčného) mechanizmu sa budeme venovať v nasledujúcej časti.\cite{popper-expertne:1989}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Inferencia}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\label{label3}
\hypertarget{link3}
Inferenčný mechanizmus slúži na odvodzovanie v expertnom systéme. Za pomoci bázy znalostí rieši daný problém a snaží sa ho vyriešiť. Celý mechanizmus spočíva v tom, že sa systém pozrie na pravidlá a pomocou odvodzovacích pravidiel sa pokúsi odvodiť fakty.

Jedným z odvodzovacích pravidiel je \textit{MODUS PONENS}. Ten sa pozrie na pravidlá tvaru \textit{IF - THEN} (ak niečo, potom niečo) a ak medzi faktami nájde splnenú IF časť pravidla, potom pridá medzi fakty THEN časť pravidla. Tento algoritmus vieme zapísať aj pomocou vzorca:

\begin{equation*}
	\frac{A \rightarrow B; A}{B}
\end{equation*}

Už je snáď pre čitateľa zrejmé, že \textit{A} predstavuje \textit{IF} časť pravidla a \textit{B} zase \textit{THEN} časť.
Po viacnásobnom aplikovaní Modus ponens získavame inferenčný mechanizmus, ktorý sa nazýva \textit{reťazenie}.

Poznáme dva spôsoby reťazenia, ktorým môže inferenčný mechanizmus dosiahnuť svoj cieľ. Ide o spätný chod (backward chaining) alebo priame reťazenie (forward chaining).

\subsection{Dopredný chod}

Dopredný chod spočíva v postupnom pridávaní  faktov do bázy dát. Celý postup si vysvetlíme na konkrétnom príklade:
\begin{itemize}
    \item Majme iniciálnu množinu faktov obsahujúcu fakty, ktoré si pre jednoduchosť očíslujeme $1, 2, 3, 4, 5$. Ďalej majme množinu pravidiel:
	\begin{itemize}
	 \item $1 \wedge 2 \rightarrow 3$
	  \item $5 \rightarrow  6$
	   \item $5 \wedge 6 \rightarrow 7$
	    \item $1 \wedge 6 \rightarrow 7$
	 \end{itemize}
Teraz môžeme postupne vďaka množine faktov a pravidlám:
	\begin{enumerate}
	 \item Aplikovaním prvého pravidla $1 \wedge 2 \rightarrow 3$ pridáme do bázy faktov fakt 3, ktorý tam už ale je, takže sa nič nezmení.
	  \item Vďaka pravidlu $5 \rightarrow  6$ môžeme do množiny pridať nový fakt 6. Báza faktov sa teda zmení na $1, 2, 3, 4, 5, 6$.
	   \item Keďže sme bázu faktov rozšírili o $6$, môžeme teraz použiť pravidlo $5 \wedge 6 \rightarrow 7$, aby sme ju rozšírili aj o $7$.
	    \item Tak, ako sme odvodili $7$ pomocou pravidla $5 \wedge 6 \rightarrow 7$, mohli by sme fakt $7$ odvodiť aj pomocou $1 \wedge 6 \rightarrow 7$.
	\end{enumerate}
 \end{itemize}
Z uvedeného príkladu je zrejmé, že na odvodenie jedného faktu sa často môže stať, že mechanizmus vykoná zbytočné kroky. Keďže tieto kroky navyše by pri veľkom systéme znamenali veľkú stratu času, je lepšie riešiť problém iným spôsobom - \textit{spätným reťazením} popísaným v ďalšej podkapitole.\cite{popper-expertne:1989}

\subsection{Spätný chod}

Na vysvetlenie metódy spätného chodu použijeme príklad z predošlej podkapitoly o doprednom reťazení. Tentokrát však budeme chcieť zistiť, či je možné odvodiť fakt $7$. A to práve tak, že budeme predpokladať, že fakt 7 platí a spätne budeme zisťovať, či je náš predpoklad správny. Uveďme teda príklad a jednotlivé kroky spätného reťazenia:
\begin{itemize}
    \item {Majme teda iniciálnu množinu faktov obsahujúcu fakty $1, 2, 3, 4, 5$. Ďalej majme množinu pravidiel:}
	\begin{itemize}
	 \item $1 \wedge 2 \rightarrow 3$
	  \item $5 \rightarrow  6$
	   \item $5 \wedge 6 \rightarrow 7$
	    \item $1 \wedge 6 \rightarrow 7$
	 \end{itemize}
Postupne vykonáme nasledujúce kroky:
	\begin{enumerate}
	 \item V prvom kroku pridáme do bázy faktov ten fakt, ktorý je našim cieľom, teda fakt $7$. Dostaneme novú množinu:  $1, 2, 3, 4, 5, 7$.
	  \item Pozrieme sa na pravidlá a vyberieme to, z ktorého sa dá vyvodiť fakt 7. Takým pravidlom je napr. pravidlo $1 \wedge 6 \rightarrow 7$.
	   \item Aby sme mohli odvodiť $7$ z tohto pravidla, musí platiť celá ľavá strana pravidla, teda $1 \wedge 6$. Keďže $1$ sa už nachádza v báze faktov, stačí, aby sme do nej dostali fakt $6$.
	    \item Pokračujeme analogicky - nájdeme pravidlo, z ktorého dokážeme odvodiť fakt $6$. Tento výber je jednoznačný, keďže $6$ sa nachádza len v jednom z pravidiel - $5 \rightarrow 6$.
	     \item Keďže celou ľavou stranou vybraného pravidla je len $5$ a tento fakt je už v báze faktov obsiahnutý, dosiahli sme cieľ, ktorý sme si stanovili.
	\end{enumerate}
Čo by sa stalo, keby sme v kroku 2 vybrali pravidlo $5 \wedge 6 \rightarrow 7$ (namiesto pravidla $1 \wedge 6 \rightarrow 7$)? Vôbec nič, pretože fakt $5$ je takisto v báze faktov od začiatku ako fakt $1$, a teda mechanizmus by pokračoval rovnako.
\end{itemize}
Metódou spätného reťazenia sme teda odvodili fakt $7$ tak, že sme spätne vyberali pravidlá, z ktorých sa dá daný fakt vyvodiť.\cite{popper-expertne:1989}





Keďže každá reprezentácia je špecifická formuláciou znalostí, odlišujú sa jednotlivé techniky aj inferenčným mechanizmom. V jednotlivých podkapitolách sa pokúsime aspoň načrtnúť spôsob odvodzovania.\cite{popper-expertne:1989}\cite{umela-inteligence:1993}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Predikátová logika}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\assignment{MH: V tejto sekcii spomenut aj rezolvenciu, zadefinovat
%rezolvencne pravidlo, a dospiet k tomu, ze nad prvoradovou logikou mozeme
%,,efektivne'' usudzovat pomocou nej. Vysvetlit zdravost a uplnost (aby sme
%mohli povedat, ze rezovlencia je pre prvoradovu logiku Z\&U.}
%
Týmto spôsobom reprezentácie sme sa zaoberali v prvej kapitole. V tejto časti len stručne popíšeme, akú úlohu zohráva predikátová logika v expertnom systéme.

V skratke je predikátová logika prostriedok na formulovanie údajov pomocou symbolov. V takejto štruktúre sa totiž dá s dátami lepšie pracovať a jednoduchšie a hlavne formálne odvodzovať ďalšie údaje. Základnou jednotkou predikátovej logiky sú atómy. Ako samotné pomenovanie hovorí, ide o nedeliteľnú časť. Pozostáva z predikátu a termov a zapisujeme ju v tvare P($t_{1}$,...,$t_{n}$), kde P je n-árny predikát a $t_{i}$ sú termy. Termom môže byť premenná, konštanta alebo funkcia. Priestor na detailnejšie vysvetlenie budeme mať v spomínanej kapitole. Uvedieme už len jednoduchý príklad pre zrozumiteľnejšie objasnenie významu predikátovej logiky pre reprezentáciu znalostí:

\begin{itemize}
	\item {Vyjadrime v predikátovej logike to, že akýkoľvek objekt z domény (pre jednoduchosť uvažujme objekty z celého sveta - teda doménou je svet) môže byť ženou. Zápis bude teda vyzerať nasledovne: \textit{žena(X)}. Vytvorili sme unárny predikát žena, kde X je premenná (zatiaľ by sme za ňu mohli dosadiť čokoľvek z domény). Analogicky vytvoríme ďalší predikát: \textit{človek(X)}. Samotné predikáty by nám pri budovaní bázy znalostí príliš nepomohli. Ak však vytvoríme pravidlo \textit{žena(X) $\rightarrow$ človek(X)}, dostaneme veľmi silný prostriedok pre inferenčný mechanizmus. Teraz sa môžeme pozrieť na bázu znalostí a pomocou obyčajného logického dôsledku odvodiť nový fakt (v reči logiky sme poučili odvodzovanie pravidlo Modus Ponens spomínané v časti: \hyperlink{link3}{\ref{label3}}). Ak sa v báze faktov napr. nachádza \textit{žena(Jana)}, vieme odvodiť, že tvrdenie ,,Jana je človek'' je pravdivé, teda v reči logiky platí \textit{človek(Jana)}, pretože vieme, že z toho, keď je niekto ženou vyplýva, že je aj človekom.
	
	Na základe tohto príkladu je očividnejšie, ako by odborník na expertné systémy pomocou znalostí od odborníka v určitej oblasti pre neho vedel skonštruovať expertný systém. Samozrejme by už len samotná formulácia bázy znalostí vyžadovala omnoho viac práce, nehovoriac o zložitosti odvodzovania.}
\end{itemize}

Samozrejme pre predikátovú logiku poznáme viac inferenčných mechanizmov. Okrem Modus ponens patrí k tým jednoduchším napr. \textbf{Rezolvencia}. Na aplikovanie rezolvenčného pravidla potrebujeme dve pravidlá v \textit{konjunktívnom tvare}. Ide o tvar, kedy sú jednotlivé ,,časti'' pravidla pospájané logickou spojkou \textit{a} a v jednotlivých ,,častiach'' nájdeme len literály pospájané logickou spojkou \textit{alebo}. Pravidlo je teda v konjunktívnej forme, ak je v tvare:

\begin{equation*}
	A_1 \wedge A_2 \wedge ... \wedge A_n
\end{equation*}

, pričom ${A_i}$ sú formuly v tvare:

\begin{equation*}
	B_1 \vee B_2 \vee ... \vee B_m
\end{equation*}

, kde ${B_j}$ sú literály a pre každé ${A_i}$ môže byť \textit{m} rôzne.

Keď už vieme, ako budú naše dve vstupné formuly do rezolvenčného mechanizmu vyzerať, môžeme pristúpiť k samotnej rezolvencii. Najprv uvedieme vzorec a potom ho budeme demonštrovať na príklade. Rezolvenčné pravidlo vyzerá nasledovne:

{\footnotesize
\begin{equation*}
	\frac{a_1 \vee a_2 \vee ... \vee a_i \vee ... \vee a_n, b_1 \vee b_2 \vee ... \vee (b_j = \neg a_i)\vee ... \vee b_m}{a_1 \vee a_2 \vee ... \vee a_{i-1} \vee a_{i+1} \vee ... \vee a_n \vee b_1 \vee b_2 \vee ... \vee b_{j-1} \vee b_{j+1} \vee ... \vee b_m}
\end{equation*}
}

Na prvý pohľad môže vyzerať pravidlo veľmi odradzujúco, no v skutočnosti ide o veľmi logické vyvodzovanie skutočnosti. Predstavme si teda jednoduchú životnú situáciu. Majme dve pravidlá:

%\assignment{Medzery alebo podciarkovnik v mat formuliach}

\begin{itemize}
    \item ${budePrsat \vee pojdemeVon}$
     \item ${nebudePrsat \vee pozriemeSiFilm}$
\end{itemize}

Tieto dve formuly musia byť splnené súčasne. Čiže v ľudskej reči: ak nebude pršať, pôjdeme von a ak bude pršať, pozrieme si film. Nami zapísané formuly sú ale v konjunktívnom tvare (preto nemusia vyzerať s ,,ľudskou rečou'' identicky). Keď sa nad tým zamyslíme, v reči logiky môžeme \textit{nebude pršať} zapísať ako \textit{$\neg budePrsat$}. Našli sme teda literál z jednej formuly, ktorého negáciu vieme nájsť v druhej formuly. Všetko nasvedčuje tomu, že môžeme aplikovať rezolvenčné pravidlo:

\begin{equation*}
	\frac{budePrsat \vee pojdemeVon, \neg budePrsat \vee pozriemeSiFilm}{pojdemeVon \vee pozriemeSiFilm}
\end{equation*}

Ak by nepršalo, šli by sme von. Prvá formula by bola splnená (šli by sme
von) a druhá tiež (neprší) -- už nás nezaujíma, či pozeráme film. Ak by
pršalo, pozerali by sme film. Prvá formula je splnená (prší) -- už nás nezaujíma, či ideme von a druhá tiež (pozeráme film). Ak teda povieme, že buď budeme pozerať film alebo pôjdeme von, nebudeme klamať a celý problém zjednoduším. To isté nám odvodilo aj rezolvenčné pravidlo.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Produkčný systém}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Produkčný systém je pravidlový inferenčný systém, ktorý sa od logických systémov odlišuje tým, že nerešpektuje nejakú striktnú logickú sémantiku, ale iba odvádza fakty na základe aplikovateľnosti pravidiel. 

Produkčný systém sa skladá z troch častí:
\begin{itemize}
 \item {\textbf{súbor produkčných pravidiel} - pravidlá v tvare \textit{Situácia -> Akcia}}
  \item {\textbf{báza faktov}}
   \item {\textbf{inferenčný mechanizmus} - produkčný systém nepoužíva na odvodzovanie žiadne inteligentné systémy. Berie produkčné pravidlá rad-radom a slepo odvodzuje fakty.}
    \end{itemize}
    
Keďže produkčný systém berie pravidlá rad-radom a pomocou už známych faktov odvádza nové fakty, kým neprejde celou bázou znalostí, je logické, že výsledok ovplyvní poradie pravidiel. Tento dôsledok si ukážeme na príklade.

Báza faktov:
\begin{itemize}
 \item ${otec(Peter,Jan)}$
  \item ${otec(Ivan, Michal)}$
   \item ${brat(Ivan,Peter)}$
\end{itemize}

Majme dve rôzne bázy znalostí, ktoré sa líšia poradím pravidiel.

Báza znalostí 1:
\begin{equation*}
{otec(X,Y) \wedge brat(X,Z) \rightarrow stryko(Z,Y)}
\end{equation*}
\begin{equation*}
{stryko(X,Y) \rightarrow synovec(Y,X)}
\end{equation*}
\begin{equation*}
{synovec(X,Y) \wedge otec(Y,Z) \rightarrow bratranec(X,Z)}
\end{equation*}
\begin{equation*}
{bratranec(X,Y) \rightarrow synovec(Y,X)}
\end{equation*}
\begin{equation*}
{brat(X,Y) \rightarrow brat(Y,X)}
\end{equation*}

Báza znalostí 2:
\begin{equation*}
{synovec(X,Y) \wedge otec(Y,Z) \rightarrow bratranec(X,Z)}
\end{equation*}
\begin{equation*}
{stryko(X,Y) \rightarrow synovec(Y,X)}
\end{equation*}
\begin{equation*}
{bratranec(X,Y) \rightarrow synovec(Y,X)}
\end{equation*}
\begin{equation*}
{otec(X,Y) \wedge brat(X,Z) \rightarrow stryko(Z,Y)}
\end{equation*}
\begin{equation*}
{brat(X,Y) \rightarrow brat(Y,X)}
\end{equation*}

Pozrime sa na to, ako budeme odvádzať nové fakty pomocou prvej bázy znalostí.
\begin{enumerate}
\item $otec(Peter,Jan) \wedge brat(Ivan,Peter) \rightarrow stryko(Peter,Michal)$
\item $stryko(Peter,Michal) \rightarrow synovec(Michal,Peter)$
\item $synovec(Michal,Peter) \wedge otec(Peter,Jan) \rightarrow bratranec(Michal,Jan)$
\item $bratranec(Michal,Jan) \rightarrow bratranec(Jan,Michal)$
\item $brat(Ivan,Peter) \rightarrow brat(Peter,Ivan)$
\end{enumerate}

Keďže z faktu ${otec(Ivan, Michal)}$ pomocou prvého pravidla nič neodvodíme (Michal by musel byť definovaný ako brat niekoho, čo medzi faktami nevidíme), použili sme fakty $otec(Peter,Jan)$ a $brat(Ivan,Peter)$ a bázu faktov rozšírime o $stryko(Peter,Michal)$. Ďalšie kroky sú už zrejmé - ak je Peter Michalovým strýkom, potom logicky Michal je Petrovým synovcom. Spolu s faktom, že Peter je Janov otec vieme usúdiť, že Michal je Janovým bratrancom. No a v poslednom dôležitom kroku zistíme, že keď je Michal bratranec Jana, potom je aj Jan bratranec Michala. Posledné pravidlo pridá do bázy faktov $brat(Peter,Ivan)$.

Ak použijeme v produkčnom systéme druhú bázu znalostí, uvidíme, akú dôležitosť má spomínané poradie pravidiel v báze znalostí. V prvom kroku nič neodvodíme, pretože medzi faktami nemáme žiadnu informáciu o synovcoch. V druhom kroku podobne, kvôli tomu, že fakty neobsahujú žiaden predikát strýko. Analogicky v treťom kroku (neviem o nikom, kto by bol niekoho bratranec). Až vo štvrtom kroku odvodíme to isté, čo sme vďaka prvej bázy znalostí odvodili v prvom kroku - $stryko(Peter,Michal)$. V piatom odvodíme tiež $brat(Peter,Ivan)$. Dostali sme sa na koniec odvodzovania a naša báza faktov bola rozšírená len o dva nové fakty. Pritom ani jeden z nich nie je fakt, ktorý sme odvodili vďaka báze znalostí 1. Ide o fakt $bratranec(Jan,Michal)$ (samozrejme chýbajú aj ďalšie).

Produkčný systém má teda obrovskú nevýhodu - je nejednoznačný a závislý na poradí pravidiel. Na druhej strane však môže byť veľmi rýchly a nepotrebuje žiadne zložité algoritmy.
    
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Sémantické siete}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pod pojmom \textit{sieť} rozumieme množinu vrcholov, medzi ktorými môže a nemusí byť hrana. Toto spojenie vyjadruje nejaký vzťah  (reláciu) medzi danými dvoma vrcholmi. Pomocou sietí je možné vyjadriť rôzne závislosti. Napr. pri sémantických sieťach často používame reláciu \textit{isa} z anglického \textit{is a}, teda \textit{je}. Vyjadruje vzťah subsumcie. Pre lepšie pochopenie uvedieme príklad: 

\begin{figure}[htb]
	\begin{center}
		\includegraphics[height=260px,width=150px]{images/semanticka_siet.png}
		\caption{Príklad sémantickej siete.}
	\end{center}
\end{figure}

\begin{itemize}
 \item {Majme dve entity. Jednou je \textit{Osoba} a druhou \textit{Žena}. Medzi nimi bude \textit{isa} relácia od \textit{Ženy} smerom k \textit{Osobe}, pretože pojem žena je konkretizáciou pojmu osoba. Entity, z ktorých vychádza táto hrana môžeme tiež chápať ako podmnožiny a môžu byť na jednej úrovni viaceré (ak napríklad pridáme do našej siete entitu \textit{Muž}). Tiež môžeme vytvárať viacero isa relácií za sebou. Nadmnožinou osoby je entita \textit{Cicavec} a nad ňou zas môžeme vidieť entitu \textit{Živočích}. Keďže je žena v \textit{isa} relácii s osobou, osoba v \textit{isa} relácii s cicavcom a cicavec v \textit{isa} relácii so živočíchom, žena nebude dediť vlastnosti len od osoby, ale aj od cicavca,  (pretože osoba dedí od osoby) a analogicky od živočícha. Relácia \textit{isa} je tranzitívna.}

Ďalšou reláciou v sieti je relácia \textit{jeVydatáZa}. Táto relácia je binárna a smeruje od ženy k mužovi. Znamená to teda, že žena je vydatá za muža (budeme pre jednoduchosť uvažovať svet, v ktorom je každá žena vydatá za  muža). Ak máme v báze faktov napríklad fakt \textit{Žena(Anna)}, môžeme odvodiť z tejto siete nasledujúce fakty:

\begin{enumerate}
	\item{\textit{Žena} je v isa relácii s \textit{Osoba}, čo vieme zapísať aj: \textit{Žena(Anna) $\rightarrow$ Osoba(Anna)} a keďže \textit{Žena(Anna)} platí, potom platí aj \textit{Osoba(Anna)}}
	 \item{analogicky k predošlému bodu: \textit{Osoba} je v isa relácii s \textit{Cicavec}, čo vieme zapísať aj: \textit{Osoba(Anna) $\rightarrow$ Cicavec(Anna)} a keďže \textit{Osoba(Anna)} platí (čo sme predchvíľou odvodili), potom platí aj \textit{Cicavec(Anna)}}
	  \item{tretí krok už bude úplne zrejmý: \textit{Cicavec} je v isa relácii s \textit{Živočích}, čo vieme zapísať aj: \textit{Cicavec(Anna) $\rightarrow$ Živočích(Anna)} a keďže \textit{Cicavec(Anna)} platí (tiež sme odvodili), potom platí aj \textit{Živočích(Anna)}}
\end{enumerate}

Analogicky by sme mohli z faktu \textit{Muž(Jozef)} rovnakými troma krokmi odvodiť \textit{Živočích(Jozef)}. Takisto však zo siete vieme prečítať, že ak je niekto ženou a niekto zase mužom, daná žena je vydatá za muža. Z faktov \textit{Žena(Anna)} a \textit{Muž(Jozef)} teda vieme odvodiť fakt \textit{jeVydatáZa(Anna, Jozef)}.
 \end{itemize}

Sémantické siete sú teda úspornou reprezentáciou. Vďaka využívaniu dedičnosti (najvšeobecnejšie entity sú ,,navrchu''), dosahujeme rýchly prístup k dátam. Táto štruktúra sa využíva napríklad pri reprezentácii taxonómií a prirodzených jazykov. Má ale taktiež nevýhody, hlavne pri rozsiahlej databáze znalostí.  Často môžeme vyvodiť sporné informácie.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Rámce}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Z rámcov môžeme vytvárať siete, teda môžeme spájať rámce do vzťahov (napr. \textit{isa} relácia). Rámce pozostávajú z položiek (atribútov) a ich hodnôt.  Jeden rámec (po anglicky \textit{frame}) je ako tabuľka. Tiež má svoj názov, riadky a stĺpce. V prvom stĺpci tabuľky je názov rámca, v druhom stĺpci hodnota. Ku každému atribútu ešte môžeme priradiť procedúru, ktorá určuje, čo presne sa s prichádzajúcimi dátami bude diať.\cite{guide-to-es:1986}
Poznáme tri kategórie:

\begin{itemize}
 \item{\textbf{if-addded - keď sa pridáva}, t.j. procedúra, ktorá sa vykoná, keď sa hodnota do danej položky pridáva}
  \item{\textbf{if-removed - keď sa maže}, t.j. procedúra, ktorá sa vykoná pri mazaní hodnoty danej položky}
   \item{\textbf{if-needed - keď je potrebné}, t.j. procedúra, ktorá sa vykoná, keď sa od pola očakáva, že bude vyplnené, ale je prázdne}
\end{itemize}

Rámce si môžeme predstaviť ako zložitejšiu sémantickú sieť. Hranami budú opäť relácie (napr. isa). Vrcholmi však budú zložitejšie atribúty. Tentokrát nebudeme mať vo vrchole len informáciu o názve entity, ale aj jej jednotlivé atribúty. Na nasledujúcom obrázku môžeme vidieť príklad rámcovej siete.

\begin{figure}[htb]
	%\begin{center}
		\includegraphics[width=\textwidth]{images/frames.png}
		\caption{Príklad siete zloženej z rámcov.}
	%\end{center}
\end{figure}

Na obrázku máme ukážkovú sieť zostavenú z piatich rámcov. Ide o strom s troma úrovňami. Na najvyššej úrovni sa nachádza rámec \textit{OSOBA}, ktorý predstavuje najvšeobecnejšiu kategóriu v našej doméne. Vidíme, že má atribúty \textit{Meno}, \textit{Dátum narodenia}, \textit{Zamestnanie} a \textit{Titul}. Na jednotlivých položkách sú naviazané procedúry, ktorým sa budeme ešte venovať. Najskôr vysvetlíme hierarchiu rámcovej siete.

Od rámcov \textit{ZAMESTNANEC} a \textit{ŠTUDENT} vedie \textit{isa relácia} ku koreňu stromu -- rámcu \textit{OSOBA}. Znamená to, že \textit{ZAMESTNANEC} a \textit{ŠTUDENT} sú potomkami \textit{OSOBY}, a teda dedia všetky jej atribúty a procedúry. Môžeme si to predstaviť tak, že každý potomok je akoby rozšírením svojho predchodcu, teda okrem predchodcovi vlastností má ešte nejaké navyše. Rozdiel medzi \textit{OSOBOU} a \textit{ZAMESTNANCOM} závisí od procedúry viažucej sa na atribút \textit{ZAMESTNANIE}, čo vysvetlíme neskôr. Rozdiel medzi \textit{OSOBOU} a \textit{ŠTUDENTOM} je ale zrejmý aj z obrázka -- záznam o študentovi má vyplnené pole \textit{Zamestnanie} (v našom príklade je zamestnaním Jožka študent). Všetko ostatné zdedil rámec \textit{ŠTUDENT} od \textit{OSOBY}. Analogicky zdedia rámce \textit{BC ŠTUDENT} a \textit{MGR ŠTUDENT} vlastnosti (teda údaje v jednotlivých poliach a procedúry) od ich predchodcu - \textit{ŠTUDENT}.

Ako sme už spomínali, na jednotlivé atribúty sa môžu viazať procedúry \textit{if-added}, \textit{if-removed} alebo \textit{if-needed}. Prejdeme postupne úrovňami a popíšeme jednotlivé procedúry (všetky sú zakreslené v obrázku). Najjednoduchšou procedúrou je hneď prvá - viažuca sa na atribút \textit{Meno}. Je typu \textit{if-removed} a hovorí o tom, že keď vymažeme zo záznamu meno osoby, jeho existencia stráca význam a celý záznam teda zanikne. Záznam na prvej úrovni je najjednoduchší - vidíme, že rámec má vyplnené len pole \textit{Meno}. Pole \textit{Dátum nar.} (dátum narodenia) nie je vypísané na ani jednej úrovni a ani nemá definovanú procedurú, je teda nepovinným poľom. Na ďalšom atribúte (\textit{Zamestnanie}) máme zavesené procedúry, ktoré vravia o tom, čo sa stane pri akejkoľvek zmene údaju o zamestnaní. Ak sa do prázdneho poľa pridá informácia (\textit{if-added}) o tom, že zamestnaním osoby je študent, vieme, že sa v hierarchii presunieme o úroveň nižšie na rámec \textit{ŠTUDENT}. Pri akomkoľvek inom zamestnaní je osoba zamestnancom a teda v hierarchii sa presunieme o úroveň nižšie na rámec \textit{ZAMESTNANEC}. Takisto sme definovali procedúru, ktorá vraví o opačnom procese (\textit{if-removed}) a to, že keď na ktorejkoľvek úrovni vymažeme údaj o zamestnaní, vrátime sa v strome do koreňa - rámec \textit{OSOBA}. Všetky procedúry definované pre rámec jeho potomkovia zdedia, teda všetky tieto tri procedúry platia aj pre zamestnanca, študenta, ale aj bakalárskeho študenta a magisterského študenta.

Ďalšie procedúry sa viažu na atribúty rámca \textit{ŠTUDENT}, konkrétne na atribút \textit{Titul}. Procedúra \textit{if-needed} definuje to, že sa očakáva, že pre študenta budeme mať definovaný titul. Pokiaľ definovaný nie je, študent je \textit{BC ŠTUDENTOM}. Ak sa študentovi pridá titul Bc. (\textit{if-added}), vieme o ňom, že bude \textit{MGR ŠTUDENT}. Poslednou procedúrou je \textit{if-added} na najnižšej úrovni - rámec \textit{MGR ŠTUDENT}, atribút \textit{Titul}. Popisuje, čo sa udeje, ak sa osobe pridá titul Mgr. V tej chvíli totiž stráca osoba status študenta, údaj o zamestnaní (študent) sa vymaže a osoba sa dostáva na najvyššiu úroveň.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Ontológie}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Ontológie sú formálne systémy určené na zachytenie konceptov, alebo pojmov
(tiež terminológie) v nejakej doméne, a ich reprezentácie ich vzťahov.
Takéto systémy sa často využívajú na popísanie terminológie v nejakej
odbornej doméne, napr. v biológii, genetike, alebo v medicíne. Medzi
najznámejšie ontológie, hoc na neformálnej úrovni, určite patrí biologická
klasifikácia organizmov, ktorej základy položil Darwin \cite{darwin}. Medzi
úspešne aplikované ontológie z novšieho obdobia radíme napríklad Gene
Ontology \cite{gene-onto}, zachytávajúca informácie o génoch a z
pridružených domén. Alebo SNOMED \cite{snomed}, obsahujúca komplexnú
medicínsku terminológiu: symptómy, diagnózy, procedúry, anatomické
štruktúry, liečivá, a tak ďalej. SNOMED v súčasnosti obsahuje viac než
330\,000 konceptov a 993\,000 rôznych vzťahov.

Napríklad, v ontológii SNOMED nájdeme (okrem množstva iných) nájdeme
koncepty:
\begin{itemize}
\item \texttt{ViralUpperRespiratoryTractInfection}
\item \texttt{CommonCold}
\item \texttt{Virus}
\item \texttt{InfectiousProcess}
\end{itemize}

Ďalej v ontológii sú zachytené vzťahy, ako
\texttt{ViralUpperRespiratoryTract\-Infection} je vo vzťahu
\texttt{CausativeAgent} s \texttt{Virus} a vo vzťahu
\texttt{Pathological\-Process} s \texttt{InfectiousProcess}. Ďalej je tu
zaznamenané, že koncept \texttt{Common\-Cold} je podkonceptom konceptu
\texttt{ViralUpperRespiratoryTractInfection}. Vďaka tomu sa vyššie uvedené vzťahy s
konceptmi \texttt{Virus} a \texttt{Infectious\-Process} prenesú (zdedia) aj
na koncept \texttt{CommonCold}.

Toto je možné vďaka tomu, že ontológia SNOMED je postavená na deskripčnej
logike, ktorá má logickú, a umožňuje formálne a presné odvodzovanie. Vzťah
podkonceptu je vyjadrený za pomoci subsumcie ($\isa$), a vyššie
uvedené vzťahy medzi konceptami pomocou existenčného obmedzenia ($\exists$).
Pripomeňme si, že s deskripčnou logikou sme sa zoznámili v časti~\ref{sec:dl}.

Ontológie, napríklad tie vyššie uvedené, našli uplatnenie napríklad pri
klinickej, či výskumnej praxi, kde odborníci spolupracujúci a komunikujúci
vo svojej doméne ich využívajú na pochopenie vzťahov medzi pojmami, napr.
ak odborný lekár stanoví diagnózu ako
\texttt{ViralUpperRespiratoryTractInfection}, druhý, napr. všeobecný lekár
môže vďaka ontológii vidieť, že jedným z prípadov tejto diagnózy je nádcha,
čiže (\texttt{CommonCold}). 

Oveľa dôležitejšie je ich využitie v znalostných systémoch, kde infernčné
mechanizmy vďaka nim môžu nachádzať nové súvislosti, a vyvodiť tak viac
relevantných implicitných poznatkov. Napríklad ak znalostný systém obsahuje
pravidlá, ktoré spúšťajú nejaké odvodenie u pacientov s opakovaným výskytom
diagnózy odpovedajúcej \texttt{ViralUpperRespiratoryTractInfection}, vďaka
ontológii ich systém spustí aj u pacientov, ktorí majú v elektronických
zdravotných záznamoch evidenciu o častom výskyte nádchy (teda diagnózy
odpovedajúcej konceptu \texttt{CommonCold})

V tejto sekcii sa zoznámime s inferenciou nad ontológiami reprezentovanými
deskripčnou logikou, ukážeme si príklad odvodenia, a na záver sa pozrieme
ako môžeme túto inferenciu automaticky spustiť
pomocou ontologického editora Protegé.

\subsection{Odvodzovanie v ontológiách}

Dôležitá vlastnosť deskripčnej logiky je presnosť. Ak odpovieme na nejakú
otázku, vieme odpoveď overiť formálnymi metódami. Výhodou reprezentácie
ontológií v deskripčných logikách alebo z nich odvodených jazykov je, že
odvodzovanie znalostí je rozhodnuteľné a na jeho výpočet existujú hotové
implementované algoritmy. V tejto časti sa zoznámime s tablovým algoritmom
pre deskripčnú logiku $\ALC$.

\subsubsection{Negačná Normálna Forma}

Koncept $C$ je v \emph{negačnej normálnej forme} (NNF) práve vtedy, ak sa
nachádza konštruktor komplementu ($\neg$) výhradne len pred atomickými
konceptami v tomto zloženom koncepte $C$.

\subsubsection{Doplňovací strom}

Tablový algoritmus funguje tak, že sa pre daný vstupný koncept alebo bázu
znalostí snaží skonštruovať model (alebo jeho konečnú reprezentáciu). Ak sa
takýto model podarí nájsť môžeme s istotou tvrdiť, že koncept (respektíve báza
znalostí) je splniteľný.

Doplňovací strom (CTree -- z angl.\ \textit{Completion Tree}) je definovaný trojicou $T = (V,E,\L)$, kde
$(V,E)$ je strom a $\L$ je značkovacia funkcia taká, že:\
\begin{itemize}
\item $\L(x)$ je množina konceptov pre všetky $x\in V$;
\item $\L(\Pair{x}{y})$ je množina rolí pre všetky $\Pair{x}{y}\in E$.
\end{itemize}


Pomocou tohoto stromu sa dokazuje konzistentnosť bázy znalostí, či splniteľnosť nejakého konceptu s ohľadom na danú bázu znalostí. Hrany v strome sú vzťahy, ktoré sú uvedené v rolách. Ak máme napr. vrcholy (nejaké individuály) \textit{x}, \textit{y}, tak:
\begin{itemize}
\item $y$ je \emph{nasledovník} vrcholu $x$ práve vtedy, ak $\Pair{x}{y}\in
E$; zároveň vtedy platí, že $y$ je \emph{predchodca} $x$;
\item $y$ je \emph{$R$-nasledovník} vrcholu $x$ práve vtedy, ak $\Pair{x}{y}\in E$
a zároveň $R \in \L(\Pair{x}{y})$.
\end{itemize}


Môže sa nám však stať, že niektorý vrchol by sa nám rozvíjal donekonečna, vtedy to treba objaviť a vrchol zablokovať a ďalej nerozvíjať. Vrchol $x\in V$ musíme zablokovať, ak má nejakého predchodcu $y$, takého, že:
\begin{itemize}
\item buď $\L(x) \subseteq \L(y)$;
\item alebo už vrchol $y$ je blokovaný
\end{itemize}


Pri zostrojovaní stromu a aplikovaní pravidiel Tablový algoritmu sa niekedy
dostaneme do problematickej situácie, kedy chceme vrcholu do jeho značky
priradiť koncept, ale aj jeho komplement. Vtedy vyhlásime spor a vrátime sa
do najbližšieho stavu, kde máme na výber pracovať s nejakým iným konceptom.

V doplňovacom strome CTree $T=(V,E,\L)$ sa nachádza \textit{spor} práve
vtedy, ak pre nejaký vrchol $x\in V$ a nejaký koncept $C$ platí zároveň, že
$C\in\L(x)$, ale aj $\neg C\in\L(x)$.

Strom CTree $T=(V,E,\L)$ je \textit{bezosporný} práve vtedy, ak v ňom neexistuje taký vrchol $V$, ktorý bý obsahoval spor.

Algoritmus používa na rozvíjanie doplňovacieho stromu nasledovné pravidlá,
ktorým hovoríme tablové pravidlá.

\subsubsection{Tablové pravidlá}
\begin{tabular}{@{}ll@{}}
$\sqcap$-rule: & ak $C_1 $ $\sqcap C_2\in \L(x)$, $x\in V$ a
                $\{C_1, C_2\}\not\subseteq\L(x)$\\
	       & \emph{a $x$ nie je blokovaný}\\
              & potom $\L(x):=\L(x)\cup\{C_1,C_2\}$ \\[1ex]
$\sqcup$-rule: & ak $C_1 \sqcup C_2\in \L(x)$, $x\in V$ a
                $\{C_1,C_2\}\cap\L(X)=\emptyset$\\
	      & \emph{a $x$ nie je blokovaný}\\
              & potom buď $\L(x):=\L(x)\cup\{C_1\}$ \emph{alebo}
	      $\L(x):=\L(x)\cup\{C_2\}$ \\[1ex]
$\forall$-rule: & ak $\forall R.C\in\L(x)$, $x,y\in V$, $y$ je $R$-nasledovník vrcholu $x$, $C\notin\L(y)$\\
	       & \emph{a $x$ nie je blokovaný}\\
           & potom $\L(y):=\L(y)\cup\{C\}$\\[1ex]
$\exists$-rule: & ak $\exists R.C\in\L(x)$, $x\in V$ taký, že nemá
$R$-nasledovníka $y$, ktorý\\
		& spĺňa:\ $C\in\L(y)$ \emph{a $x$ nie je blokovaný}\\
           & potom $V:=V\cup\{z\}$, $\L(z):=\{C\}$ a $\L(\Pair{x}{z}):=\{R\}$\\[1ex]
$\T$-rule: & ak $C_1 \isa C_2\in \T$, $x\in V$ a
                $\nnf(\neg C_1 \sqcup C_2)\notin\L(x)$\\
	      & \emph{a $x$ nie je blokovaný}\\
              & potom $\L(x):=\L(x)\cup\{\nnf(\neg C_1 \sqcup C_2)\}$
\end{tabular}

Vstupom tablového algoritmu je báza znalostí, ktorej konzistentnosť chceme
overiť. Bázu znalostí pred začiatkom pretransformujeme do negačnej
normálnej formy. Strom inicializujeme tak, že doň ,,zakódujeme'' axiómy z
ABoxu. Následne aplikujeme tablové pravidlá pokiaľ sa dá. Ak nám nevznikne
spor, báza znalostí je konzistentná.

\subsubsection{Tablový algoritmus}
\begin{itemize}
\item \textbf{Vstup:} $\K=(\T,\A)$ -- báza znalostí v jazyku $\ALC$ v NNF
\item \textbf{Výstup:}  odpoveď, či $\K$ je konzistentná
\item \textbf{Kroky:} 
	\begin{enumerate}
		\item Inicializuj doplňovací strom:
		  $T := (V,E,\L$) také že:
		\begin{enumerate}
		 \item $V = \{a|(a:C)\in\A\}$,
		 \item $E = \{(a,b)|(a,b:R)\in\A\}$,
		 \item $\L(a) = \{C|(a:C)\in\A\}$ pre všetky $a\in V$,
		 \item $\L((a,b)) = \{R|(a,b:R)\in\A\}$ pre všetky
		 $(a,b)\in E$;
		\end{enumerate}
		\item Aplikuj \emph{tablové pravidlá} až kým už žiadne
		pravidlo nie je aplikovateľné; 
		\item
		Odpovedz ,,$\K$ je konzistentná'' ak $T$ je bezosporný;\\
		Inak odpovedz ,,$\K$ je nekonzistentná''.
	\end{enumerate}
\end{itemize}

Vďaka redukciám, ktoré sme uviedli v časti~\ref{sec:dl} vieme pomocou toho
istého algoritmu testovať splniteľnosť konceptu v báze znalostí, ako aj
vyplývanie subsumcie.

Tablový algoritmus pre deskripčnú logiku $\ALC$, ktorý sme uviedli, vždy
zastaví a je zdravý a úplný (pozri definície~\ref{def:zdravost}
a~\ref{def:uplnost}, str.\,\pageref{def:zdravost}) \cite{dlhb}.


\subsection{Demonštračný príklad}

Fungovanie tablového algoritmu si ukážeme na príklade z rozprávkovej
domény. Pokúsime sa formou ontológie (TBoxu) a pripojených dát (ABoxu)
zachytiť koncepty, objekty a ich vzťahy z nasledovného textu:

\begin{quote}\textit{%
Ak je niekto bohatý, tak všetci členovia jeho rodiny sú tiež bohatí. Členom nejakej rodiny je hocikto, kto je matkou, otcom, dcérou, synom niekoho, či dokonca niečí pes. Ak je niekto matkou alebo dcérou, určite je to žena. Podobne, synovia a otcovia sú muži. Muži aj ženy sú osoby. Každá osoba musí mať matku aj otca.
Richieho otec, Mr. Richard Rich Sr. je bohatý a známy. Richie má matku Reginu, a jeho pes sa volá Dollar.}
\end{quote}

V našej ukážke z údajov z textu vytvoríme bázu znalostí (teda, budeme text
\emph{konceptualizovať}). Následne tablovým algoritmom dokážeme:
(a) konzistentnosť zostrojenej bázy znalostí, (b)
nekonzistentnosť v prípade dodatočného predpokladu, že "Dollar nie je bohatý".
V nasledujúcej časti potom predvedieme, ako úlohu riešiť za pomoci
ontologického editora.

Keď sa nad textom zamyslíme, prvých sedem viet hovorí hovorí o konceptoch v
našej doméne, a ich vzťahoch. Koncepty budú prislúchať k pojmom ako
,,muž'', ,,žena'', ,,osoba'', ale tiež, ,,bohatý''. Vzťahy zasa budú
prislúchať k pojmom ,,byť otcom niekoho'', ,,byť matkou niekoho'', a tak
ďalej.

\subsubsection{Slovník}

Pred formalizovaním jednotlivých viet ako axióm bázy znalostí si potrebujeme ujednotiť prvky, ktoré budeme pri formalizovaní využívať.

\begin{description}
  \item[Atomické koncepty:] \texttt{Rich, Man, Woman, Person}
  \item[Roly:] \texttt{hasMother, hasFather, hasSon hasDaughter, hasDog}
  \item[Individuály:] \texttt{richie, regina, richard, dollar}
\end{description}




\subsubsection{KnowledgeBase - Koceptualizácia}
\paragraph{TBox} 

\begin{enumerate}
\item  Ak je niekto bohatý, tak všetci členovia jeho rodiny sú tiež bohatí.
Členom nejakej rodiny je hocikto, kto je matkou, otcom, dcérou, synom
niekoho, či dokonca niečí pes:
	\\
	\texttt{
	Rich $\sqsubseteq $ $\forall $hasMother.Rich $\sqcap $ $\forall $hasFather.Rich  $\sqcap $ $\forall $hasDaughter.Rich \\	
		 $\phantom{x}\hspace{7ex} $ $\sqcap $ $\forall $hasSon.Rich $\sqcap $ $\forall $hasDog.Rich
	} 
\item Ak je niekto matkou alebo dcérou, určite je to žena:\\
	\texttt{
	$\exists $hasMother.$\neg $Woman $\sqcup $ $\exists $hasDaughter.$\neg $Woman $\sqsubseteq $  $\perp $	
	}
\item Podobne, synovia a otcovia sú muži: \\ 
	\texttt{
	$\exists $hasFather.$\neg $Man $\sqcup $ $\exists $hasSon.$\neg $Man $\sqsubseteq $  $\perp $
	} 
\item  Muži aj ženy sú osoby: \\
	\texttt{
	Woman $\sqcup $ Man $\sqsubseteq $  Person	
	} 
\item Každá osoba musí mať matku aj otca: \\
	\texttt{
	Person $\sqsubseteq $ $\exists $hasMother.$\top $ $\sqcap $ $\exists $hasFather.$\top $
	}  
\end{enumerate}

\paragraph{ABox}
\begin{enumerate}
\item Richieho otec, Mr. Richard Rich Sr. je bohatý a známy. 
	\\ \\
	\texttt{
	<richard, richie>: hasSon \\
	<richie, richard>: hasFather \\
	richard: Rich
	}
\item Richie má matku Reginu, a jeho pes sa volá Dollar. \\ \\
	\texttt{
	<richie, regina>: hasMother \\
	<richie, dollar>: hasDog
	}
\end{enumerate}

\subsubsection{TBox NNF}

Aby sme mohli použiť tablový algoritmus, je potrebné mať predpripravenú bázu znalostí v Negačnej Normálnej Forme. Preto všetky skonceptualizované axiómy prevedieme do tohoto tvaru.

\begin{enumerate}
\item 
	\texttt{
	$\neg $ Rich $\sqcup $ ($\forall $hasMother.Rich $\sqcap $ $\forall $hasFather.Rich  $\sqcap $ $\forall $hasDaughter.Rich \\	
		 $\phantom{x}\hspace{11ex} $ $\sqcap $ $\forall $hasSon.Rich $\sqcap $ $\forall $hasDog.Rich)
	} 
	
\item \texttt{
	$\forall $hasMother.Woman $\sqcap $ $\forall $hasDaughter.Woman
	} 
\item \texttt{
	$\forall $hasFather.Man $\sqcap $ $\forall $hasSon.Man
	} 
\item \texttt{
	($\neg $Woman $\sqcap $ $\neg $Man) $\sqcup $  Person	
	} 
\item \texttt{
	$\neg $Person $\sqcup $ ($\exists $hasMother.$\top $ $\sqcap $ $\exists $hasFather.$\top $)
	}  
\end{enumerate}



Poznámka: \textit{TBox-ové pravidlá v tvare} \texttt{(A $\sqcup$ $\bot $)} \textit{môžeme zapisovať aj ako} \texttt{A}. (Prípady 2,3 v TBox-e)


\subsubsection{Tablový algoritmus}

Kvôli ľahšej orientácii v značkách stromu nebudeme do nich pridávať také
koncepty, ktoré nám strom nejak neovplyvnia. Príkladom môžu byť všeobecne
kvantifikované roly, ktoré nespájajú daný vrchol s iným. Vtedy považujeme
pravidlo za použité a kvôli prehľadnosti ho nezapíšeme do značky.

\paragraph{Inicializovaný CTree}~\\

\noindent\begin{tikzpicture}[font=\small]

 \SetUpEdge[lw = 1.5pt, color = black, labelcolor = white]
  \GraphInit[vstyle=Normal] 
  \SetGraphUnit{3}
  %vertexes
   \Vertex[x=2, y=9]{regina}
   \Vertex[x=8, y=7]{richie}
   \Vertex[x=14, y=9]{dollar}
   \Vertex[x=8, y=12]{richard}

  %edges  
  \tikzset{EdgeStyle/.style={->}}
   \Edge[label=$hasDog$](richie)(dollar)
   \Edge[label=$hasMother$](richie)(regina)

   \Edge[style={bend right = 35}, label=$hasFather$](richie)(richard)
   \Edge[style={bend right = 35}, label=$hasSon$](richard)(richie)
  
  %labels
  \node (lab-richard) at (10,13) [shape=rectangle,align=center,draw] {$\lbrace$ Rich $\rbrace$}; 
  

   \draw[dotted] (lab-richard)  -- (richard); 
 \end{tikzpicture}

\paragraph{Dôkaz konzistencie KB.}

Aby sme dokázali konzistentnosť nami KB, potrebujeme ukázať, že tablový
algoritmus skonštruuje bezosporný doplňovací strom.\\

\noindent\begin{tikzpicture}[font=\small]

 \SetUpEdge[lw = 1.5pt, color = black, labelcolor = white]
  \GraphInit[vstyle=Normal] 
  \SetGraphUnit{3}

  %vertexes

   \Vertex[x=2, y=9]{regina}
   \Vertex[x=8, y=7]{richie}
   \Vertex[x=14, y=9]{dollar}
   \Vertex[x=8, y=12]{richard}

	\Vertex[x=12, y=13]{a}
	\Vertex[x=12, y=11]{b}
	
	\Vertex[x=1, y=13]{c}
	\Vertex[x=6, y=12]{d}
  %edges  

  \tikzset{EdgeStyle/.style={->}}
   \Edge[label=$hasDog$](richie)(dollar)
   \Edge[label=$hasMother$](richie)(regina)
   
   \Edge[style={bend right = 35}, label=$hasFather$](richie)(richard)
   \Edge[style={bend right = 35}, label=$hasSon$](richard)(richie)
   
	\Edge[label=$hasFather$](richard)(a)
	\Edge[label=$hasMother$](richard)(b)
	\Edge[label=$hasFather$](regina)(c)
	\Edge[label=$hasMother$](regina)(d)
  %labels

% RICHARD LABEL
  \node (lab-richard) at (7,15) [shape=rectangle,align=center,draw] {$\lbrace$
  $\top $, Rich, $\neg $Rich $\sqcup $ ($\forall $hasMother.Rich $\sqcap $ $\forall $hasFather.Rich  $\sqcap $ $\forall $hasDaughter.Rich $\sqcap $ \\ 
  $\forall $hasSon.Rich $\sqcap $ $\forall $hasDog.Rich), $\forall $hasSon.Rich, $\forall $hasFather.Man $\sqcap $ $\forall $hasSon.Man \\
  $\forall $hasSon.Man, ($\neg $Woman $\sqcap $ $\neg $Man) $\sqcup $  Person, Person, $\neg $Person $\sqcup $ ($\exists $hasMother.$\top $ \\ $\sqcap $ $\exists $hasFather.$\top $), $\exists $hasMother.$\top $, $\exists $hasFather.$\top $
  $\rbrace$}; 

% RICHIE LABEL  
\node (lab-richie) at (7,2) [shape=rectangle,align=center,draw] {$\lbrace$
  $\top $, Rich, Man, ($\neg $Woman $\sqcap $ $\neg $Man) $\sqcup $  Person, Person, $\neg $Rich $\sqcup $ ($\forall $hasMother.Rich \\ $\sqcap $ $\forall $hasFather.Rich  $\sqcap $ $\forall $hasDaughter.Rich $\sqcap $ $\forall $hasSon.Rich $\sqcap $ $\forall $hasDog.Rich), $\forall $hasDog.Rich, \\ $\forall $hasFather.Rich, $\forall $hasMother.Rich, $\forall $hasMother.Woman $\sqcap $ $\forall $hasDaughter.Woman, \\ $\forall $hasMother.Woman, $\forall $hasFather.Man $\sqcap $ $\forall $hasSon.Man, $\forall $hasFather.Man 
  $\rbrace$};

% DOLLAR LABEL  
\node (lab-dollar) at (12,5) [shape=rectangle,align=center,draw] {$\lbrace$
  $\top $, Rich, ($\neg $Woman $\sqcap $ $\neg $Man) $\sqcup $  Person \\
  $\neg $Woman, $\neg $Man, $\neg $Person $\sqcup $ \\
  ($\exists $hasMother.$\top $ $\sqcap $ $\exists $hasFather.$\top $), \\
  $\neg $Person
  $\rbrace$};
  
% REGINA LABEL
\node (lab-regina) at (3,5) [shape=rectangle,align=center,draw] {$\lbrace$
  $\top $, Rich, Woman, ($\neg $Woman \\ 
  $\sqcap $ $\neg $Man) $\sqcup $  Person, Person, \\
  $\neg $Person  $\sqcup $ ($\exists $hasMother.$\top $ \\
  $\sqcap $ $\exists $hasFather.$\top $) $\exists $hasMother.$\top $, \\
  $\exists $hasFather.$\top $
  $\rbrace$};

% BLOCKED NODE LABELS
\node (lab-a) at (14,13) [shape=rectangle,align=center,draw] {$\lbrace$ $\top $ $\rbrace$ \\ BLOCKED};
\node (lab-b) at (14,11) [shape=rectangle,align=center,draw] {$\lbrace$ $\top $ $\rbrace$ \\ BLOCKED};
\node (lab-c) at (3,13) [shape=rectangle,align=center,draw] {$\lbrace$ $\top $ $\rbrace$ \\ BLOCKED};
\node (lab-d) at (6,13) [shape=rectangle,align=center,draw] {$\lbrace$ $\top $ $\rbrace$ \\ BLOCKED};
   \draw[dotted] (lab-richard)  -- (richard); 
   \draw[dotted] (lab-richie)  -- (richie);
   \draw[dotted] (lab-dollar)  -- (dollar);
   \draw[dotted] (lab-regina)  -- (regina);
   
   \draw[dotted] (lab-a)  -- (a);
   \draw[dotted] (lab-b)  -- (b);
   \draw[dotted] (lab-c)  -- (c);
   \draw[dotted] (lab-d)  -- (d);
 \end{tikzpicture}





\paragraph{Nekonzistentnosť KB po pridaní rozporového pravidla.}
Do ABoxu skúsime pridať fakt, že "Dollar nie je bohatý": \\
\texttt{dollar: $\neg $Rich} \\


V tomto prípade máme ľahšiu úlohu, stačí ak si vieme dobre nedeterministicky tipnúť aké axiómy nás najskôr privedú ku sporu.
Ak však vieme, že Richard je bohatý a je otcom Richieho, tak Richardov syn Richie musí byť bohatý. Následne ak má Richie psa, aj ten musí byť bohatý, lenže jeho pes Dollar nie je bohatý. Avšak všetky spomínané pravidlá sme museli použiť, nemali sme na výber. Nemôžme sa teda nikam backtracknúť a musíme vyhlásiť spor aj bez ďalších pridaných pravidiel.
 \\ \\
\begin{tikzpicture}[font=\small]

 \SetUpEdge[lw = 1.5pt, color = black, labelcolor = white]
  \GraphInit[vstyle=Normal] 
  \SetGraphUnit{3}
  %vertexes
   \Vertex[x=2, y=9]{regina}
   \Vertex[x=8, y=7]{richie}
   \Vertex[x=14, y=9]{dollar}
   \Vertex[x=8, y=12]{richard}

  %edges  
  \tikzset{EdgeStyle/.style={->}}
   \Edge[label=$hasDog$](richie)(dollar)
   \Edge[label=$hasMother$](richie)(regina)

   %\Edge[label=$hasSon$](richard)(richie)
   
   %\draw[->] (richie) to [bend right] node [above left] {hasFather} (richard);
   \Edge[style={bend right = 35}, label=$hasFather$](richie)(richard)
   \Edge[style={bend right = 35}, label=$hasSon$](richard)(richie)
  %labels

  \node (lab-richard) at (8,14) [shape=rectangle,align=center,draw] {$\lbrace$
  Rich, $\neg $Rich $\sqcup $ ($\forall $hasMother.Rich $\sqcap $ $\forall $hasFather.Rich  $\sqcap $ $\forall $hasDaughter.Rich $\sqcap $ \\ 
  $\forall $hasSon.Rich $\sqcap $ $\forall $hasDog.Rich), $\forall $hasSon.Rich
  $\rbrace$}; 
  
\node (lab-richie) at (8,5) [shape=rectangle,align=center,draw] {$\lbrace$
  Rich, $\neg $Rich $\sqcup $ ($\forall $hasMother.Rich $\sqcap $ $\forall $hasFather.Rich  $\sqcap $ $\forall $hasDaughter.Rich $\sqcap $ \\ 
  $\forall $hasSon.Rich $\sqcap $ $\forall $hasDog.Rich), $\forall $hasDog.Rich
  $\rbrace$};
  
\node (lab-dollar) at (14,7) [shape=rectangle,align=center,draw] {$\lbrace$
  $\neg $Rich, Rich
  $\rbrace$ \\ CLASH};
   \draw[dotted] (lab-richard)  -- (richard); 
   \draw[dotted] (lab-richie)  -- (richie);
   \draw[dotted] (lab-dollar)  -- (dollar);
 \end{tikzpicture}


\paragraph{Záver.}

V prvom prípade sme naozaj dostali CTree strom, ktorý je bezosporný a tým
sme dokázali konzistentnosť bázy znalostí. Taktiež, ak sme začali
predpokladať chudobu Richieho psa Dollara, dospeli sme pomocou tablový
algoritmu ku sporu, z ktorého nebolo návratu. Tým sme ukázali, že takáto
báza znalostí by už konzistentná nebola.

\subsection{Ontologický editor Protegé}

Na prácu s ontológiami, zisťovanie ich konzistentnosti, a ďalšie
rozhodovacie úlohy, slúži editor Protegé.%
\footnote{\url{http://protege.stanford.edu/}}

\subsubsection{Syntax}

Protegé používa svoju syntax a preto sa niektoré axiómy zapisujú
odlišnejšie. Ukážeme ako by sme našu bázu znalostí previedli do tohoto
editora. \\ \\
Thing (sa používa ako $\top $) je nadtriedou všetkého. Keďže máme axiómy,
ktoré niesú podtriedou niečoho iného - platia všeobecne, vieme povedať že
pre Thing (pre ľubovoľný individuál) to musí platiť a teda Thing je
podtriedou: \\	\\
\texttt{(hasDaughter \textbf{only} Woman) \textbf{and} (hasMother \textbf{only} Woman) \\
	(hasFather \textbf{only} Man) \textbf{and} (hasSon \textbf{only} Man)
	} \\


Podtriedy Person sú Man a Woman, pretože Man aj Woman sú osoby. Person je
podtriedou: \\ \\
\texttt{(hasFather \textbf{some} Thing) \textbf{and} (hasMother \textbf{some} Thing)\\
		Thing} \\

Ostala nám trieda Rich (trieda bohatých), ktorá je jednak podtriedou triedy
Thing, ale aj tried: \\ \\
\texttt{hasFather \textbf{only} Rich \\
hasMother \textbf{only} Rich \\
hasSon \textbf{only} Rich\\
hasDaughter \textbf{only} Rich \\
hasDog \textbf{only} Rich
}



\subsubsection{Výstupy a vizualizácie}

Pozrime sa teraz, aké zaujímavé výstupy a vizualizácie môžeme získať za
pomoci editora Protegé.

\paragraph{OrtoGraph.}

Zaujímavá časť, ktorou Protegé disponuje je možnosť vizualizácie vzťahov medzi triedami, či už to sú ich nadtriedy alebo potriedy. Znázorňuje aj vzťahy rolí s triedami alebo patričnosť individuálov k triedam. \\

\includegraphics[scale=0.6]{images/ortograph2}

\paragraph{Hieararchia tried a individuálov.}

Na tomto obrázku môžme vidieť naľavo hierarchiu tried pre našu ukážku problému. Ako vidíme Thing je naozaj nadtriedou všetkých ostatných konceptov. Napravo je zoznam použitých individuálov. \\

\includegraphics[scale=.6]{images/structure}

\paragraph{Trieda \texttt{Rich}.}

Nahliadneme do triedy Rich, kde po spustení vstávaneho reasonera Hermit sme odvodili okrem priameho vzťahu, že Richard je bohatý, aj to, že Richie, Regina, Dollar sú tiež bohatí (znázornené slabšou farbou). Vidíme aj nadtriedy pre danú triedu, ale aj zdedené nadtriedy od vyššej triedy v hierarchii (v tomto prípade od triedy Thing).

\includegraphics[scale=.5]{images/rich}

Akonáhle pridáme Dollar-a do triedy nebohatých, vznikne konflikt (spor), pretože stále budeme vedieť odvodiť, že je bohatý, ale budeme mať aj priamy vzťah, ktorý nám vraví, že tam nemá byť. Vtedy nám reasoner odhalí chybu a podá aj vysvetlenie, kde nastal problém. \\

\includegraphics[scale=.6]{images/inconsistency}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\section{Bayesovské siete}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%----------------------------------------------------------------------------------------
%	Úvod
%----------------------------------------------------------------------------------------
%\subsection{Úvod}

Bayesovské siete sú jedným z pravdepodobnostných grafických modelov, ktoré sa využívajú pri riešení problémov neurčitosti. Spájajú teóriu grafov a teóriu prevdepodobnosti. Pomocou bayesovských sietí vieme popísať závislosť pozorovaných javov, napr. zvislosť medzi príznakom a chorobou. Na základe konkrétneho príznaku u pacienta by sme vedeli zistiť s akou pravdepodobnosťou  má pacient jednotlivé choroby\cite{lbn:2003}. Bayesovske siete sú reprezentované pomocou orientovaného acyklického grafu, ktorý tvoria dve množiny: množina vrcholov a množina hrán. Vrcholy predstavujú náhodné premenné a zakresľujú sa ako kružnica označená menom premennej. Hrany vyjadrujú vzťahy podmienenej závislosti medzi jednotlivými premennými a kreslia sa ako šípky, ktoré spájajú vrcholy. Šípka smerujúca z vrchola $A$ do vrcholmi $B$ hovorí o závislosti premenných $A$ a $B$, kde hodnota premennej B závisí od hodnoty premennej $A$. Inými slovami $A$ priamo ovplyvňuje $B$. Vrchol $A$ je pritom označovaný za rodiča vrchola $B$ a vrchol $B$ za dieťa vrchola $A$. Vrcholy nespojené šípkou predstavujú podmienene nezávislé premenné. Pre každú premennú v bayesovskej sieti platí, že je podmienene nezávislá od svojich predchodcov z výnimkou jej rodičov\cite{bnpifs:2006}. 
Bayesovské siete sa v praxi používajú napríklad pri tvorbe expertných systémoch, medicínskych aplikáciach, rozhodovacích problémoch alebo diagnostike zariadení.
%----------------------------------------------------------------------------------------
%	Formálna definícia bayesovska siet
%-----------------------------------------------	------------------------------------
\subsection{Formálna definícia bayesovskej siete}
\textbf{Bayesovská sieť} $B$ je \textbf{acyklický graf} definovaný ako trojica $(V,E,P)$
, kde:
\begin{enumerate}
\item $V$ je množina premenných
\item $E$ je množina orientovaných hrán
\item $P$ je množina podmienených pravdepodobností všetkých premenných, podmienených ich rodičmi.
\end{enumerate}

Vrchol, do ktorého nevstupuje žiadna šípka nazývame koreňom. 
Vrcholy predstavujú ľubovolný druh premennej napr. meraný parameter alebo hypotéza, nemusí teda reprezentovať iba náhodnú premennú. Premenná predstavuje konečnú množinu javov, ktoré sa vzájomne vylučujú, túto množinu nazývame aj doména premennej.
\\

Premenná môže byť:
\begin{itemize}
\item \textbf{Boolovská premenná} nadobúda hodnoty z domény $<true,false>$
\item \textbf{Diskrétná premenná} nadobúda hodnoty z domény, v ktorej sa jednotlivé hodnoty vzájomne vylučujú, napr. premenná Ročné obdobie môže nadobudnúť hodnoty $<jar,leto,jeseň,zima>$
\item \textbf{Spojitá premenná} nadobúda hodnoty z domény reálnych čísiel.
\end{itemize}
Názov premennej začína veľkým písmenom.
Hodnota premennej začína malým písmenom.
Viac čitateľ nájde v \cite{bnpifs:2006,bndg:2007}
%----------------------------------------------------------------------------------------
%	Jednoduchá bayesovska siet
%----------------------------------------------------------------------------------------


\subsection{Príklad jednoduchej Bayesovskej siete}

Predstavme si vyšetrenie u lekára. Príde pacient, ktorý sa sťažuje na častý kašeľ. Kašeľ môže byť spôsobený nádchou alebo nejakým pľúcnym ochorením (keďže sa nachádzame v jednoduchom svete, neberieme v úvahu iné možnosti, ktoré by mohli kašeľ spôsobiť). Takže pravdepodobnosť, že pacient príde za lekárom kvôli kašľu závisí od toho, či má pacient nádchu a či má nejaké pľúcne ochorenie. Ak má pacient nádchu je väčšia pravdepodobnosť, že má aj horúčku. Pravdepodobnosť, že má pacient pľúcne ochorenie je podmienená tým, či je pacient fajčiar alebo nie. Pravdepodobnosť pľúcneho ochorenia pre fajčiara je vyššia ako pre nefajčiara, teda fajčiari sú vystavený vyššiemu riziku pľúcneho ochorenia. Pľúcne ochorenie môže spôsobovať okrem kašľu aj dýchavičnosť a bolesť na hrudi. Takže pravdepodobnosť, že pacient pociťuje dýchavičnosť je závislá od toho, či má pacient pľúcne ochorenie. To isté platí aj pre pravdepodobnosť, že pacient pociťuje bolesť na hrudi.Teda U pacienta s pľúcnym ochorením sa s vyššou pravdepodobnosťou môže vyskytnúť dýchavičnosť a bolesť na hrudi ako u pacienta bez pľúcneho ochorenia.
\\

Situáciu s návštevou lekára je možné zakresliť pomocou Bayesovskej siete,
ktorá obsahuje sedem pravdepodobnostných premenných: $Fajčiar$, $Pľúcne$
$ochorenie$, $Dýchavičnosť$, $Bolesť\ na\ hrudi$, $Kašeľ$, $Nádcha$ a
$Horúčka$, ktoré môžu byť v stave T - pravda alebo F - nepravda.
Orientované hrany medzi premennými znázorňujú závislosti od
predchádzajúcich udalostí/premenných.  \\

\begin{figure}[h!]
  \hspace*{-0.37cm}
  \centering
	\includegraphics[scale=0.445]{images/Simple_Bayesian_Network}		
  \caption{Bayesovská sieť znázorňujúca podmienené pravdepodobnosti príznakov od nezávislých chorôb nádcha a pľúcne ochorenie}\label{fig:obr1}
\end{figure}
\hypertarget{network}{}  

Každému vrcholu Bayesovskej siete prislúcha tabuľka podmienenej pravdepodobnosti, ktorá reprezentuje rozdelenie podmienenej pravdepodobnosti pre daný vrchol za predpokladu jeho rodičov. Tabuľka teda pozostáva z pravdepodobností s akými bude mať premenná práve jednu z možných hodnôt za predpokladu hodnôt jej rodičov a to pre všetky kombinácie hodnôt rodičov.\cite{bndg:2007,mrbn:2009}\\

\begin{figure}[h!]
  \centering
	\includegraphics[scale=0.5]{images/Pravdepodobnostna_Tabulka_Kasel}		
  \caption{Tabuľka podmienenej pravdepodobnosti pre premennú \textit{Kašeľ} z našej Bayesovskej siete zobrazenej na Obr.\ref{fig:obr1}}\label{fig:obr5}
\end{figure}
\hypertarget{probability_table}{}  

\hyperlink{probability_table}{Obr. \ref{fig:obr5}} zobrazuje tabuľku podmienenej pravdepodobnosti premennej $Kašeľ$. Na \hyperlink{network}{Obr. \ref{fig:obr1}} zobrazujúcom našu Bayesovskú sieť vidíme, že vrchol reprezentujúci premennú $Kašeľ$ má dvoch rodičov (smerujú k nemu dve šípky) a to $Nádcha$ a $Pľúcne\ ochorenie$. Pravdepodobnosť, že premenná Kašeľ nadobudne hodnotu T alebo F je teda závislá od hodnôt premenných $Pľúcne\ ochorenie$ a $Nádcha$.\\

Pre lepšiu prehľadnosť budeme premenné našej Bayesovskej siete označovať vo vzorcoch následovne:

\begin{align*}
F &= Fajčiar\\
PO &= Pľúcne\ ochorenie\\
D &= Dýchavičnosť\\
BH &= Bolesť\ na\ Hrudi\\
K &= Kašeľ\\
N &= Nádcha\\
H &= Horúčka
\end{align*}
Výpočet pravdepodobností jednotlivých vrcholov Bayesovskej siete z nášho príkladu zobrazeného na \hyperlink{network}{Obr.\ref{fig:obr1}} vyzerá následovne:\\

Premenné $Nádcha$ a $Fajčiar$ sú nezávislé, k vrcholom nevedie žiadna orientovaná hrana, teda ich neovplyvňuje žiadna iná premenná. 
\begin{align*}
P(F) &= P(F)\\
P(N) &= P(N)
\end{align*}

Premenné $Pľúcne\ ochorenie$, $Dýchavičnosť$, $Bolesť\ na\ hrudi$, $Kašeľ$ a $Horúčka$ sú závislé premenné, vchádza do nich aspoň jedna šípka, teda sú ovplyvňované inými premennými.\\

Premenná $Pľúcne ochorenie$ závisí od premennej $Fajčiar$. 
\begin{align*}
P(PO) &= (PO|F)
\end{align*}
Premenné $Dýchavičnosť$ a $Bolesť\ na\ hrudi$ od  premennej $Pľúcne\ ochorenie$.
\begin{align*}
P(D) &= P(D|PO)\\
P(BH) &= P(BH|PO)
\end{align*}
Premenná $Horúčka$ od premennej $Nádcha$.
\begin{align*}
P(H) &= P(H|N)
\end{align*}
Premenná $Kašeľ$ od premennej $Pľúcne\ ochorenie$ a $Fajčiar$.
\begin{align*}
P(K) &= P(K|PO,N)
\end{align*}

%------------------------------------------------
\subsection{Združená pravdepodobnosť}
Združená alebo vzájomná pravdepodobnosť je pravdepodobnosť toho, že viacero javov nastane súčasne. Združenú pravdepodobnosť $N$ premenných vieme vypočítať ako pravdepodobnosť jednotlivých vrcholov Bayesovskej siete\cite{aima:2003,bndg:2007}. 


\begin{equation}
P(X_1, X_2, ..., X_n) = \prod\limits_{i=1}^n P(X_i|rodičia(X_i))
\end{equation}

Pre našu Bayesovskú sieť chorôb a ich príznakov \hyperlink{network}{Obr. \ref{fig:obr1}} by sme pravdepodobnosť vypočítali následovne:
\begin{multline}
P(F,PO,D,BH,K,N,H)=P(F)P(PO|F)P(D|PO)\\
P(BH|PO)P(K|PO,N)P(H|N)P(N)
\label{eq:eq1} 
\end{multline}
\hypertarget{bayesian_probability}{} 
\subsection{Inferencia v Bayesovských sieťach}
%\subsection{Pravdepodobnostná inferencia}
Bayesovské siete sa často využívajú pri odvodzovaní pravdepodobností
(infe\-rencii) \cite{lbn:2003,bndg:2007}. V našom príklade Bayesovskej sieti \hyperlink{network}{Obr. \ref{fig:obr1}} nás napr. zaujíma, čo je pravdepodobnejšou príčinou pacientovho kašľu, pľúcne ochorenie alebo nádcha.

\subsubsection{Presná inferencia}
Keď zisťujeme presnú inferenciu, analyticky počítame distribúciu podmienenej pravdepodobnosti. Viac o presnej inferencii nájde čitateľ v \cite{aima:2003}.
\paragraph{Inferencia vyčíslením.}
Pomocou sčitovania podmienok z distribúcie úplnej vzájomnej pravdepodobnosti vieme vypočítať ľubovolnú podmienenú pravdepodobnosť v Bayesovej sieti. \cite{aima:2003}
Výpočet pravdepodobnosti pľúcneho ochorenia za predpokladu kašľu:

\assignment{Tu mi nie je jasná tá notácia $P(X|U=V,Y=Z)$ nie je to isté a
prehľadnejšie $P(X|V,Z)$?}

\begin{align}
\scriptsize
\begin{split}
P(PO=T|K=T) &= \frac{P(PO=T,K=T)}{P(K=T)}\\
&= \frac{\sum\nolimits_{f,n}P(F=f,PO=T,K=T,N=n)}{\sum\nolimits_{f,po,n}P(F=f,PO=po,K=T,N=n)}\\ 
&= \frac{\sum\nolimits_{f,n} P(F=f)P(PO=T|F=f)P(K=T|PO=T,N=n)P(N=n)}{\sum\nolimits_{f,po,n} P(F=f)P(PO=po|F=f)P(K=T|PO=po,N=n)P(N=n)}
\end{split}
\end{align}

Pravdepodobnosť, že kašeľ je spôsobený pľúcnym ochorení vypočítame ako podiel pravdepodobnosti, že oba javy (kašeľ a pľúcne ochorenie) nastanú súčasne a pravdepodobnosti s akou sa u pacienta vyskytne samotný kašeľ.\\

Výpočet pravdepodobnosti nádchy za predpokladu kašľu:
\begin{align}
\scriptsize
\begin{split}
P(N=T|K=T) &= \frac{P(N=T,K=T)}{P(K=T)}\\ 
&= \frac{\sum\nolimits_{f,po}P(F=f,PO=po,K=T,N=T)}{\sum\nolimits_{f,po,n}P(F=f,PO=po,K=T,N=n)}\\ 
&= \frac{\sum\nolimits_{f,po}P(F=f)P(PO=po|F=f)P(K=T|PO=po,N=T)P(N=T)}{\sum\nolimits_{f,po,n}P(F=f)P(PO=po|F=f)P(K=T|PO=po,N=n)P(N=n)}\\
\end{split}
\end{align}

Pravdepodobnosť, že kašeľ je spôsobený nádchou vypočítame ako podiel pravdepodobnosti, že oba javy (kašeľ a nádcha) nastanú súčasne a pravdepodobnosti s akou sa u pacienta vyskytne samotný kašeľ.\\

Pre výpočet pravdepodobnosti rôznych stavov domény v Bayesovskej sieti je možné použiť tabuľku, v ktorej budeme mať vypočítanú úplnú vzájomnú pravdepodobnosť pre danú Bayesovskú sieť. Z nej potom vieme jednoducho vypočítať pravdepodobnosť, že nastane nejaký konkrétny jav\cite{bndg:2007}. Výpočet úplnej vzájomnej pravdepodobnosti Bayesovskej siete je pre Bayesovkú sieť veľkého rozsahu zložité, resp. časovo náročné. Preto sa pre počítanie pravdepodobnostnej inferencie takejto siete používajú iné metódy, povieme si o nich neskôr. Tabuľka pozostáva so všetkých premenných danej Bayesovskej siete a všetkých možností ich ohodnotenia. Súčet všetkých políčok tabuľky nám dáva hodnotu 1.\\

Pre našu Bayesovnskú sieť \hyperlink{network}{Obr. \ref{fig:obr1}} by tabuľka úplnej vzájomnej pravdepodobnosti vyzerala následovne:
\begin{figure}[h!] 
   \centering 
  \includegraphics[scale=0.55]{images/Tabulka_uplnej_vzajomnej_pravdepodobnosti}
   \caption{Tabuľka úplnej vzájomnej pravdepodobnosti}
   \hypertarget{complete_probability}{}\label{fig:obr3}
\end{figure}\\

Jednotlivé políčka v tabuľke \hyperlink{complete_probability}{Obr. \ref{fig:obr3}} sme vypočítali pomocou vzťahu na výpočet vzájomnej pravdepodobnosti Bayesovskej siete
\hyperlink{bayesian_probability}{Eq. \ref{eq:eq1}}. V tabuľke sa pred každou premennou nachádza znak $\glqq +\grqq \ $ alebo $\glqq -\grqq \ $, čo reprezentuje akú hodnotu premenná v našej doméne nadobúda. V našom prípade môže každá premenná nadobudnúť jednu z hodnôt $T (pravda)$ alebo $F (nepravda)$. Teda ak premenná $Horúčka$ nadobúda hodnotu $T$, zapíšeme to ako $+h$, a keď nadobúda hodnotu $F$, tak $-h$.\\

Atomická udalosť definuje stav domény. Informácie o doméne vieme iba z pravdepodobností. Atomické udalosti sa navzájom vylučujú, teda platnosť jednej udalosti vylučuje platnosť inej. Tvoria všetky možnosti stavu v akom sa doména môže nachádzať, teda všetky kombinácie ohodnotenia premenných. Pre našu doménu (Bayesovskú sieť) zobrazenú na \hyperlink{network}{Obr. \ref{fig:obr3}} je jednou z atomických udalostí napr. $Kašel = T (+k)$, $Pľúcne\ ochrenie = F (-po)$, $Fajčiar = T (+f)$, $Dýchavičnosť = F (-d)$, $Bolesť\ na\ hrudi = F (-bh)$, $Horúčka = T (+h)$, $Nádcha = T (+n)$. Každé políčko tabuľky úplnej vzájomnej pravdepodobnosti vyjadruje pravdepodobnosť, že nastane jedna atomická udalosť v doméne.\\

\begin{figure}[h!] 
  	\centering
  	\includegraphics[scale=0.55]{images/Tabulka_horucka}
  	\caption{Tabuľka úplnej vzájomnej pravdepodobnosti, výpočet pravdepodobnosti P(+h)}
\hypertarget{atomic}{} \label{fig:obr2}
\end{figure} 

Ak chceme vyjadriť výrok $Horúčka = T$, je to disjunkcia všetkých atomických udalostí, v ktorých nadobúda premenná $Horúčka$ hodnotu $T$. V Tabuľke zobrazenej na \hyperlink{atomic}{Obr. \ref{fig:obr2}} je červeným rámikom vyznačená časť tabuľky, ktorá reprezentuje stav domény, v ktorom má pacient horúčku $(+h)$, teda platí výrok $Horúčka = T$. Ohodnotenie zvyšných premenných môže byť ľubovolné, podstatné je, aby platil výrok $Horúčka = T$.  Pravdepodobnosť, že tento jav nastane vypočítame pomocou tabuľky. $P(+h)$ vypočítame tak, že spočítame všetky políčka v tabuľke, kde sa nachádza $+h$. Pre každý výrok teda sumujeme pravdepodobnosti atomických udalostí, pre ktoré daný výrok platí.

\begin{align*}
\begin{split}
P(+h) &= 0,00003595 + 0,00034652 + 0,00000051 + 0,00000014\\
&+ 0,00000016 + 0,00000154 + 0,00002007 + 0,00000571\\
&+ 0,00001182 + 0,00033966 + 0,0000005 + 0,00001427\\
&+ 0,00000005 + 0,00000151 + 0,00001967 + 0,00056525\\
&+ 0,00013687 + 0,00131943 + 0,00000512 + 0,00000146\\
&+ 0,00000061 + 0,00000587 + 0,00020295 + 0,00005773\\
&+ 0,00004502 + 0,0012933 + 0,00000502 + 0,00014431\\
&+ 0,0000002 + 0,00000575 + 0,00019894 + 0,00571535\\
&+ 0,00013687 + 0,00131943 + 0,00000512 + 0,00000146\\
&+ 0,00000061 + 0,00000587 + 0,00020295 + 0,00005773\\
&+ 0,00004502 + 0,0012933 + 0,00000502 + 0,00014431\\
&+ 0,0000002 + 0,00000575 + 0,00019894 + 0,00571535\\
&+ 0,00052115 + 0,00502398 + 0,00005182 + 0,00001474\\
&+ 0,00000232 + 0,00002235 + 0,0020521 + 0,00058372\\
&+ 0,00017141 + 0,0049245 + 0,00005079 + 0,00145918\\
&+ 0,00000076 + 0,00002191 + 0,00201146 + 0,05778858\\
&= 0,09433996
\end{split}
\end{align*}


\begin{figure}[h!]
  \centering
   \includegraphics[scale=0.55]{images/Tabulka_plucne_ochorenie_horucka}
    \caption{Tabuľka úplnej vzájomnej pravdepodobnosti, výpočet pravdepodobnosti podmienenej udalosti $P(+po|+h)$}
  \hypertarget{joint}{} \label{fig:obr4}
\end{figure}

Pomocou tabuľky vieme v Bayesovskej sieti vypočítať aj podmienené pravdepodobnosti, resp. pravdepodobnosť, že nastane podmienená udalosť. \hyperlink{joint}{Obr. \ref{fig:obr4}} zobrazuje výpočet podmienenej udalosti, že pacient má pľúcne ochorenie $(+po)$ za predpokladu horúčky $(+h)$. Pomocou tabuľky vypočítame $P(+po|+h$) tak, že spočítame všetky políčka v tabuľke, kde sa nachádza $+h$ a $+po$ súčasne a toto číslo vydelíme $P(+h)$. 

\begin{equation*}
P(+po|+h) = \frac{P(+po,+h)}{P(+h)}
\end{equation*}

Potrebujeme vypočítať pravdepodobnosť $P(+po,+h)$, že javy $+h$ a $+po$ nastanú súčasne. V tabuľke zobrazenej na \hyperlink{atomic}{Obr. \ref{fig:obr2}} je dvoma zelenými rámikmi vyznačená časť tabuľky, ktorá reprezentuje stav domény, v ktorom má pacient horúčku $(+h)$ a zároveň pľúcne ochorenie $(+po)$.
\begin{align*}
\begin{split}
P(+po,+h) &= 0,00003595 + 0,00034652 + 0,00000051 + 0,00000014\\
&+ 0,00000016 + 0,00000154 + 0,00001182 + 0,00033966\\
&+ 0,0000005 + 0,00001427 + 0,00000005 + 0,00000151\\
&+ 0,00013687 + 0,00131943 + 0,00000512 + 0,00000146\\
&+ 0,00000061 + 0,00000587 + 0,00004502 + 0,0012933\\
&+ 0,00000502 + 0,00014431 + 0,0000002 + 0,00000575\\
&+ 0,00013687 + 0,00131943 + 0,00000512 + 0,00000146\\
&+ 0,00000061 + 0,00000587 + 0,00004502 + 0,0012933\\
&+ 0,00000502 + 0,00014431 + 0,0000002 + 0,00000575\\
&+ 0,00052115 + 0,00502398 + 0,00005182 + 0,00001474\\
&+ 0,00000232 + 0,00002235 + 0,00017141 + 0,0049245\\
&+ 0,00005079 + 0,00145918 + 0,00000076 + 0,0000219\\
&= 0,01703969
\end{split}
\end{align*}

Pravdepodobnosť $P(+h$) sme už vypočítali podľa tabuľky \hyperlink{atomic}{Obr. \ref{fig:obr2}}). Pravdepodobnosti $P(+po,+h)$ a $P(+h)$ dosadíme a vypočítame pravdepodobnosť $P(+po|+h)$.
\begin{equation*}
P(+po|+h) = \frac{P(+po,+h)}{P(+h)} = \frac{0,01703969}{0,09433996} = 0,180620068
\end{equation*}

\paragraph{Inferencia použitím Bayesovho pravidla.}

Bayesovské usudzovanie má podstatnú rolu pri uvažovaní s neistotou. Je založené na
Bayesovom pravidle. Predstavme si situáciu, že chceme odvodiť proces, ktorý
nám vytvoril dáta $X$. $Y$ je hypotéza o danom procese, $P(Y)$ je potom 
pravdepodobnosť, že dáta boli vygenerované procesom $Y$ v čase, keď sme o dátach 
$X$ ešte nič nevedeli. Ako je potrebné upraviť hypotézu o procese, keď už 
vieme o nových skutočnostiach, ktoré sme získali z dát $X$? Pomôže nám pri tom 
Bayesovské pravidlo, ktoré nám poskytuje metódu na výpočet podmienenej 
pravdepodobnosti. Bayesovské pravidlo si vieme odvodiť z definície podmienenej pravdepodobnosti\cite{bndg:2007,aima:2003,bnpifs:2006,bni:2009}. Podmienenú pravdepodobnosť vypočítame následovne:

\begin{equation}
P(X|Y) = \frac{P(X,Y)}{P(Y)}
\label{eq:eq2} 
\end{equation}
Kde $P(X,Y)$ je vzájomná pravdepodobnosť javov $X$ a $Y$ a $P(Y)$ predstavuje marginálnu pravdepodobnosť javu $B$, pričom platí, že $B$ má nenulovú pravdepodobnosť.
\\
\begin{equation}
P(X,Y) = P(X/Y)P(Y)
\label{eq:eq3} 
\end{equation}
Vzťah {\ref{eq:eq3} sme získali upravením vzťahu {\ref{eq:eq2}. 

\begin{equation}
P(X,Y) = P(Y/X)P(X)
\label{eq:eq4} 
\end{equation}
Vzťah {\ref{eq:eq4} sme získali upravením vzťahu {\ref{eq:eq2}, pričom sme zamenili javy $X$ a $Y$. \\

Keď porovnáme pravé strany vzťahov {\ref{eq:eq3} a {\ref{eq:eq4} a vyjadríme $P(Y|X)$,  dostaneme Bayesovo pravidlo.\\

Bayesovo pravidlo pre mnoho-hodnotovú náhodnú premennú
\begin{equation}
P(Y|X) = \frac{P(X/Y)P(Y)}{P(X)}
\end{equation}
Beyseovo pravidlo pre mno-hodnotovú náhodnú premennú, ktorá je podmienená nejakým pozorovaním
\begin{equation}
P(Y|X,e) = \frac{P(X/Y,e)P(Y|e)}{P(X|e)}
\end{equation}
Kde $P(X|Y)$ predstavuje pravdepodobnosť vzniknutých dát $X$ za predpokladu
hypotézy $Y$ . $P(X)$ získame ako sumu všetkých hypotéz, tento proces sa nazýva 
marginalizácia (sumovanie cez neurčené hodnoty)\cite{bndg:2007}.
\begin{equation} 
P(X) = \sum\limits_{y' \in Y }P(X|y')P(y')
\end{equation}
Pričom $Y$ je množina všetkých hypotéz, ktoré by vzniknuté dáta mohli 
vygenerovať.\\

Bayesovské pravidlo nám ponúka metódu na aktualizovanie pravdepodobnosti nejakej udalosti $Y$, pričom máme k dispozícií informácie o inej udalosti udalosti $X$. Preto je väčšinou $P(Y)$ označovaná ako apriórna pravdepodobnosť udalosti $Y$, čo znamená pravdepodobnosť udalosti $Y$ pred získaním informácií o udalosti $X$. $P(Y|X)$ je označovaná ako posteriózna pravdepodobnosť udalosti $Y$, keď berieme v úvahu získané poznatky o udalosti $X$. $P(X|Y)$ je označovaná ako vierohodnosť udalosti $Y$ za predpokladu udalosti X.\cite{aima:2003,bndg:2007,bnpifs:2006,bni:2009}\\

Ukážeme si príklad použitia Bayesovského pravidla \cite{mrbn:2009}.
Predpokladajme, že máme pacienta, ktorý absolvoval test na nejakú konkrétnu chorobu, pričom test mu vyšiel pozitívne. Taktiež vieme, že chorobou trpí jeden z tisíc ľudí. Máme aj informáciu, že tento test nie je spoľahlivý, $2\%$ výsledkov sú falošne pozitívne (nesprávne označí výsledok za pozitívny) a $5\%$ výsledkov je falošne negatívnych. Naším cieľom je zhodnotiť našu vieru v to, či pacient skutočne danú chorobu má, ak vieme, že test mu vyšiel pozitívne. Zavedieme si dve premenné, a to $D$ a $T$. Premenná $D$ predstavuje situáciu, že pacient má danú chorobu a premenná $T$ predstavuje situáciu, že test vyšiel pozitívne. Nás zaujíma pravdepodobnosť $P(D|T)$.\\

Z informácií, ktoré máme k dispozícií vieme:
\begin{equation*} 
P(D) = \frac{1}{1000}
\end{equation*}
keďže chorobou trpí jeden z tisíc ľudí. Toto je apriórna pravdepodobnosť, že pacient trpí na danú chorobu predtým, ako absolvoval test. Keďže je $2\%$ šanca, že test bude falošne pozitívny, vieme:
\begin{equation*} 
P(T|-D) = \frac{2}{100}
\end{equation*}
z čoho vieme:
\begin{equation*} 
P(-T|-D) = \frac{98}{100}
\end{equation*}
Podobne šanca, že test bude falošne negatívny je $5\%$, z čoho vieme:
\begin{equation*} 
P(-T|D) = \frac{5}{100}
\end{equation*}
z čoho vieme:
\begin{equation*} 
P(T|D) = \frac{95}{100}
\end{equation*}
Použitím Bayesovno pravidla získame:
\begin{equation*} 
P(D|T) = \frac{\frac{95}{100}\frac{1}{1000}}{P(T)}
\end{equation*}

Pravdepodobnosť, že test vyjde pozitívne nepoznáme, ale dokážeme si ju vypočítať:
\begin{align*} 
\begin{split} 
P(T) &= P(T|D)P(D) + P(T|-D)P(-D)\\
&= \frac{95}{100}*\frac{1}{1000} + \frac{2}{100}*\frac{99}{1000}\\
&= \frac{2093}{100000}
\end{split}
\end{align*}
Ďalšie príklady použitia Bayesovho pravidla nájde čitateľ v \cite{aima:2003}

\paragraph{Inferencia elimináciou premenných.}
Na všetky inferenčné dotazy vieme odpovedať pomocou vzájomnej 
pravdepodobnosti, cez všetky premenné (tabuľka úplnej vzájomnej
pravdepodobnosť Bayesovskej siete). Pre binárnu Bayesovskú sieť, ktorá ma n 
premenných, by výpočet úplnej vzájomnej pravdepodobnosti bol $O(2^n)$. 
Efektívnejší spôsob na zodpovedanie inferenčného dotazu poskytuje 
eliminačná metóda. Táto metóda využíva tzv. faktorizovanú formu 
združenej pravdepodobnosti. Marginalizáciu zefektívňuje pomocou úpravy 
vzorca tak, aby sa sumy nachádzali co najhlbšie vo vzorci, pričom sa z nich
následne tvoria nové výrazy, cez ktoré sumujeme.\cite{aima:2003,mrbn:2009,dbnril:2002}\\

V prípade našej Bayesovskej siete a situácie pacienta s kašľom, môžeme pravdepodobnosť vyjadriť následovne:

\begin{align*}
\begin{split}
P(K = k) &=\sum\nolimits_{f, po, d, bh, n, h}P(F=f,N=n,PO=po,BH=bh,D=d,H=h)\\
&=\sum\nolimits_{f}\sum\nolimits_{po}\sum\nolimits_{d}\sum\nolimits_{bh}\sum\nolimits_{n}\sum\nolimits_{h}P(F=f)P(PO=po|F=f)\\
&P(D=d|PO=po)P(BH=bh|PO=po)P(N=n)\\
&P(H=h|N=n)P(K=k|PO=po,N=n)\\
&=\sum\nolimits_{f}P(F=f)\sum\nolimits_{po}P(PO=po|F=f)\sum\nolimits_{d}P(D=d|PO=po)\\
&\sum\nolimits_{bh}P(BH=bh|PO=po)\sum\nolimits_{n}P(N=n)\\
&\sum\nolimits_{h}P(H=h|N=n)P(K=k|PO=po,N=n)\\
&=\sum\nolimits_{f}P(F=f)\sum\nolimits_{po}P(PO=po|F=f)\sum\nolimits_{d}P(D=d|PO=po)\\
&\sum\nolimits_{bh}P(BH=bh|PO=po)\sum\nolimits_{n}P(N=n)T_{1}(po,k,n)\\
&=\sum\nolimits_{f}P(F=f)\sum\nolimits_{po}P(PO=po|F=f)\sum\nolimits_{d}P(D=d|PO=po)\\
&\sum\nolimits_{bh}P(BH=bh|PO=po)T_{2}(po,k)\\
&=\sum\nolimits_{f}P(F=f)\sum\nolimits_{po}P(PO=po|F=f)\sum\nolimits_{d}P(D=d|PO=po)T_{3}(po,k)\\
&=\sum\nolimits_{f}P(F=f)\sum\nolimits_{po}P(PO=po|F=f)T_{4}(po,k)\\
&=\sum\nolimits_{f}P(F=f)T_{5}(f,k)\\
\end{split}
\end{align*}
kde:
\begin{align*}
\begin{split}
&T_{1}(po,k,n) = \sum\nolimits_{h}P(H=h|N=n)P(K=k|PO=po,N=n)\\
&T_{2}(po,k) = \sum\nolimits_{n}P(N=n)T_{1}(po,k,n)\\
&T_{3}(po,k) = \sum\nolimits_{bh}P(BH=bh|PO=po)T_{2}(po,k)\\
&T_{4}(po,k) = \sum\nolimits_{d}P(D=d|PO=po)T_{3}(po,k)\\
&T_{5}(f,k) = \sum\nolimits_{po}P(PO=po|F=f)T_{4}(po,k)\\
\end{split}
\end{align*}
	
\subsubsection{Približná inferencia}
Keď je počítanie distribúcie podmienenej pravdepodobnosti v Bayesovskej sieti príliš zložité (príliš rozsiahla Bayesovská sieť), môžeme použiť približnú inferenciu, ktorá využíva pravdepodobnostné vzorkovanie tzv. sampling\cite{mrbn:2009,lbn:2003,aima:2003}.

Sampling je vytváranie vzoriek inak povedané \glqq umelých dát\grqq z distribúcií pravdepodobností Bayesovskej siete. Predpokladom je, že poznáme distribúciu pravdepodobnosti pre konkrétnu premennú Bayesovskej siete $P(X)<x+, x->$. \glqq Umelé Dáta\grqq vytvárame tak, že generujeme náhodné čísla od nula po jedna. Ak je vygenerované číslo menšie ako $x+$, premenná nadobudne hodnotu $x+$, ak je číslo väčšie než $x+$, premenná nadobudne hodnotu $x-$. Pomocou takto vytvorených vzoriek vieme odhadnúť pravdepodobnosť nastania nejakej udalosti: 
\begin{equation*} 
P(+k|+po) = \frac{N_{ps}}{N}
\end{equation*}
kde $N_{ps}$ je počet vzoriek, pre ktoré platí $K = +k$ a $PO = +po$ a $N$ je počet všetkých vzoriek, ktoré sme vytvorili.

\paragraph{Direct Sampling.}
Predpokladom je úplne špecifikovaná Bayesovská sieť, v ktorej poznáme všetky podmienené pravdepodobnosti. Na základe podmienených pravdepodobností Bayesovskej siete vieme vytvoriť vzorku atomickej udalosti. Základom je vytváranie vzoriek premenných Bayesovskej siete postupne podľa jej topológie\cite{mrbn:2009,aima:2003}. Zoberme si našu Bayesovskú sieť zobrazenú na \hyperlink{network}{Obr. \ref{fig:obr1}}. Použijeme ju na ukážku toho, ako funguje direct sampling
\begin{itemize}
\item Začať môžeme s premennou $Fajčiar$ alebo $Nádcha$, keďže ani jedna z nich nie je závislá od inej premennej. Spravíme vzorku pre premennú $Fajčiar$. $P(F) = <0.2,0.8>$. Predpokladajme, že vzorkovanie nám vráti $Fajčiar = +f$.
\item Ako ďalšiu spravíme vzorku pre premennú Nádcha. $P(N) = <0.02,0.98>$. Predpokladajme, že vzorkovanie vráti $Nádcha = -n$.
\item Pokračovať budeme vzorkou pre premennú $Pľúcne\ ochorenie$. Keďže premenná $Fajčiar$ nadobudla hodnotu $+f$, použijeme vhodnú podmienenú pravdepodobnosť. $P(PO|+f) = <0.8991,0.1009>$. Predpokladajme, že vzorkovanie vráti $Pľúcne\ ochorenie = +po$.
\item Potom spravíme vzorkou pre premennú $Dýchavičnosť$. Keďže premenná $Pľúcne\ ochorenie$ nadobudla hodnotu $+po$, použijeme vhodnú podmienenú pravdepodobnosť. $P(D|+po) = <0.208,0.792>$. Predpokladajme, že vzorkovanie vráti $Dýchavičnosť = -d$.
\item Potom spravíme vzorkou pre premennú $Bolesť na hrudi$. Keďže premenná $Pľúcne\ ochorenie$ nadobudla hodnotu $+po$, použijeme vhodnú podmienenú pravdepodobnosť. $P(BH|+po) = <0.208,0.792>$. Predpokladajme, že vzorkovanie vráti $Bolesť\ na\ hrudi = +bh$.
\item Potom spravíme vzorkou pre premennú $Horúčka$. Keďže premenná $Nádcha$ nadobudla hodnotu $-n$, použijeme vhodnú podmienenú pravdepodobnosť. $P(H|-n) = <0.09,0.91>$. Predpokladajme, že vzorkovanie vráti $Horúčka = -h$.
\item Nakoniec spravíme vzorkou pre premennú $Kašeľ$. Keďže premenná Nádcha nadobudla hodnotu $-$n a premenná Pľúcne ochorenie nadobudla hodnotu $+po$, použijeme vhodnú podmienenú pravdepodobnosť. $P(K|+po,-n) = <0.505,0.495>$. Predpokladajme, že vzorkovanie vráti $Kašeľ = +k$.
\end{itemize}

Pomocou vzorkovanie sme vytvorili atomickú udalosť 
\begin{align*}
\begin{split}
&<Fajčiar,Nádcha,Pľúcne\ ochorenie,Dýchavičnosť,Bolesť\ na\ hrudi,Horúčka,Kašeľ > \\
&= < +f,-n,+po,-d,+bh,-h,+k >
\end{split}
\end{align*} 

Predpokladajme, že sme takto vytvorili $M$ vzoriek a nech $N(X_{1},...,X_{n})$ je počet vzoriek, ktoré vytvorili atomickú udalosť $X_{1},...,X_{n}$. 

Podstatnou črtou metódy direct sampling je vzťah:
\begin{equation} 
\lim_{M \to \infty}\frac{N(X_{1},...,X_{n})}{M} = P(X_{1},...,X_{n})
\label{eq:eq5}
\end{equation}
Významom {\ref{eq:eq5}} je, že ako sa počet vzoriek, ktoré vytvoríme blíži k nekonečnu, odhadovaná pravdepodobnosť atomickej udalosti sa približuje skutočnej vzájomnej pravdepodobnosti.
\paragraph{Rejection Sampling.}
Bayesovskú sieť najčastejšie používame na výpočet podmienenej pravdepodobnosti. Rejection sampling je jedným z algoritmov, ktorý sa na tento výpočet používa\cite{aima:2003}.\\

Podstata metódy rejection sampling spočíva v tom, že na začiatku si vytvoríme vzorky rovnakým spôsobom ako sme popísali vyššie pri metóde direct sampling. Potom zamietneme tie vzorky, ktoré nespĺňajú pozorované udalosti. Nech $ \hat{P(X|e)} $ je odhadovaná podmienená pravdepodobnosť, ktorú získame pomocou algoritmu rejection sampling, potom:
\begin{equation} 
\hat{P(X|e)} = \frac{N(X|e)}{N(e)} \approx P(X|e)
\label{eq:eq6}
\end{equation}
Predstavme si, že chceme vedieť pravdepodobnosť kašlu za predpokladu, že pacient má pľúcne ochorenie $P(K|+po)$ pomocou 100 vzoriek. Predpokladajme, že v 42 vzorkách nadobúda premenná $Pĺúcne\ ochorenie$ hodnotu $+po$ a v zvyšných  64 vzorkách nadobúda hodnotu $-po$. Algoritmus rejection sampling spraví to, že všetky vzorky, v ktorých premenná $Pĺúcne\ ochorenie$ nadobúda hodnotu $-po$, zamietne, tých je 64. Uvažuje iba tie zostávajúce vzorky, to sú tie, v ktorých  premenná $Pĺúcne\ ochorenie$ nadobúda hodnotu $+po$. Ďalej predpokladajme, že zo zvyšných 42 v 11 vzorkách nadobúda premenná $Kašeľ$ hodnotu $+k$ a v 31 vzorkách nadobúda hodnotu $-k$. Algoritmus rejection sampling vráti pre tento prípad hodnotu:
\begin{equation} 
P(K|+po)= < \frac{23}{42},\frac{19}{42} > = < 0.5476,0.4524 >
\end{equation}
Keby sme na výpočet podmienenej pravdepodobnosti použili presnú inferenciu, výsledok by bol $< 0.50998,0.49002 >$. Pomocou vzorkovania a využitia algoritmus rejection sampling, vieme získať iba približnú hodnotu k tej správnej.

\subsubsection{Smer odvodzovania v bayesovských sieťach}
Smer, ktorým odvodzujeme pravdepodobnosti v Bayesovských sieťach môže byť dvojaký, a to:
\begin{itemize}
  \item Zdola na hor - ak máme informáciu o dôsledku a chceme zistiť pravdepodobnejšiu príčinu dôsledku (ako sme chceli zistiť, čo bolo pravdepodobnejšou príčinou pacientovho kašlania, pľúcne ochorenie alebo nádcha). Ide teda od dôsledku k príčinám. Tento spôsob je využívaný v expertný systémoch. Nazýva sa aj diagnostické odvodzovanie.
  \item Zhora na dol - ak chceme napr. zistiť pravdepodobnosť s akou bude pacient kašlať, ak vieme, že má nejaké pľúcne ochorenie. Tento spôsob sa nazýva aj príčinné odvodzovanie.
\end{itemize}
%----------------------------------------------------------------------------------------
